From 1f16c437658db8348e87d8c5db48ef9f79c4371d Mon Sep 17 00:00:00 2001 From: "U-Maria-PC\\Maria" Date: Sun, 13 Aug 2017 18:04:58 -0400 Subject: fixed it up a little --- src/intro_credits_graphics.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index 58e40da91..6d50581d2 100755 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -374,7 +374,8 @@ void sub_8149020(u8 mode) case 0: default: /* stuff */ - if(gMain.vblankCounter1 & 3 || gPaletteFade.active) break; + if (gMain.vblankCounter1 & 3 || gPaletteFade.active) + break; if(gMain.vblankCounter1 & 4) { var1 = gPlttBufferUnfaded[9]; @@ -528,4 +529,4 @@ u8 intro_create_latias_sprite(s16 a, s16 b) StartSpriteAnim(&gSprites[latios], 1); gSprites[latios].callback = &sub_81493C4; return sprite; -} \ No newline at end of file +} -- cgit v1.2.3 From bdf7c67943d5e0f082036e9951b182e42192c364 Mon Sep 17 00:00:00 2001 From: "U-Maria-PC\\Maria" Date: Sun, 13 Aug 2017 19:00:47 -0400 Subject: more fixes --- ld_script.txt | 4 ++-- src/intro_credits_graphics.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index ca99b5a80..8b3989c8d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -182,7 +182,7 @@ SECTIONS { asm/contest_link_80C857C.o(.text); src/contest_link_80C857C.o(.text); src/item_use.o(.text); - src/battle_anim_80CA710.o(.text); + src/battle_anim_80CA710.o(.text); asm/battle_anim_80CA710.o(.text); src/bike.o(.text); asm/easy_chat.o(.text); @@ -266,7 +266,7 @@ SECTIONS { src/braille_puzzles.o(.text); asm/pokeblock_feed.o(.text); src/clear_save_data_menu.o(.text); - src/intro_credits_graphics.o(.text); + src/intro_credits_graphics.o(.text); asm/evolution_graphics.o(.text); src/bard_music.o(.text); src/fldeff_teleport.o(.text); diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index 6d50581d2..cd0589af8 100755 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -376,7 +376,7 @@ void sub_8149020(u8 mode) /* stuff */ if (gMain.vblankCounter1 & 3 || gPaletteFade.active) break; - if(gMain.vblankCounter1 & 4) + if (gMain.vblankCounter1 & 4) { var1 = gPlttBufferUnfaded[9]; var2 = gPlttBufferUnfaded[10]; @@ -390,9 +390,9 @@ void sub_8149020(u8 mode) LoadPalette(&var2, 10, 2); break; case 2: - /* stuff */ - if(gMain.vblankCounter1 & 3 || gPaletteFade.active) break; - if(gMain.vblankCounter1 & 4) + if (gMain.vblankCounter1 & 3 || gPaletteFade.active) + break; + if (gMain.vblankCounter1 & 4) { var1 = 0x3D27; var2 = 0x295; @@ -412,7 +412,7 @@ void sub_8149020(u8 mode) void sub_814910C(struct Sprite *sprite) { - if(gUnknown_0203935C) + if (gUnknown_0203935C) { DestroySprite(sprite); } -- cgit v1.2.3 From e7a0e1a8406925ac94289bbe42bfe95c67464939 Mon Sep 17 00:00:00 2001 From: golemgalvanize Date: Sun, 13 Aug 2017 19:02:49 -0400 Subject: Update ld_script.txt --- ld_script.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/ld_script.txt b/ld_script.txt index 8b3989c8d..babcf5861 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -182,7 +182,6 @@ SECTIONS { asm/contest_link_80C857C.o(.text); src/contest_link_80C857C.o(.text); src/item_use.o(.text); - src/battle_anim_80CA710.o(.text); asm/battle_anim_80CA710.o(.text); src/bike.o(.text); asm/easy_chat.o(.text); -- cgit v1.2.3 From cd67e14e04c0fb58f876ddb96b0daabb4d0d1eac Mon Sep 17 00:00:00 2001 From: golemgalvanize Date: Sun, 13 Aug 2017 19:26:16 -0400 Subject: Delete battle_anim_80CA710.c --- src/battle_anim_80CA710.c | 2647 --------------------------------------------- 1 file changed, 2647 deletions(-) delete mode 100755 src/battle_anim_80CA710.c diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c deleted file mode 100755 index 53494608a..000000000 --- a/src/battle_anim_80CA710.c +++ /dev/null @@ -1,2647 +0,0 @@ -#include "global.h" -#include "battle.h" -#include "battle_anim.h" -#include "blend_palette.h" -#include "decompress.h" -#include "palette.h" -#include "rng.h" -#include "rom_8077ABC.h" -#include "sound.h" -#include "sprite.h" -#include "task.h" -#include "trig.h" - -struct __attribute__((packed)) Some3ByteStruct { - u8 unkArr[3]; -}; - -extern s16 gBattleAnimArgs[8]; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; -extern struct SpriteTemplate gSpriteTemplate_83D631C; -extern struct SpriteTemplate gSpriteTemplate_83D6884; -extern s16 gUnknown_03000728[]; -extern s8 gUnknown_083D680C[11][3]; -extern u16 gUnknown_083D6984[]; - -void sub_80CA768(struct Sprite* sprite); -void sub_80CA8B4(struct Sprite* sprite); -void sub_80CA9F8(struct Sprite* sprite); -void sub_80CAACC(struct Sprite* sprite); -void sub_80CAB88(struct Sprite* sprite); -void sub_80CABC0(struct Sprite* sprite); -void sub_80CAC44(struct Sprite* sprite); -void sub_80CADA8(struct Sprite* sprite); -void sub_80CAE74(struct Sprite* sprite); -void sub_80CAF20(struct Sprite* sprite); -void sub_80CAF6C(struct Sprite* sprite); -void sub_80CB09C(struct Sprite* sprite); -void sub_80CB1A4(struct Sprite* sprite); -void sub_80CB298(struct Sprite* sprite); -void sub_80CB2D4(struct Sprite* sprite); -void sub_80CB710(struct Sprite* sprite); -void sub_80CBB60(struct Sprite* sprite); -void sub_80CBC8C(struct Sprite* sprite); -void sub_80CBCF8(struct Sprite* sprite); -void sub_80CBDB0(struct Sprite* sprite); -void sub_80CC408(struct Sprite* sprite); -void sub_80CC580(struct Sprite* sprite); -void sub_80CC7D4(struct Sprite* sprite); -void sub_80CCB00(struct Sprite* sprite); -void sub_80CCCB4(struct Sprite* sprite); -void sub_80CCE0C(struct Sprite* sprite); - -s16 sub_80CC338(struct Sprite* sprite); - -void sub_80787B0(struct Sprite *sprite, u8 a2); -void sub_8078764(struct Sprite *sprite, u8 a2); -void sub_8078B34(struct Sprite *sprite); -void sub_8078D60(struct Sprite *sprite); -void sub_80786EC(struct Sprite *sprite); -void sub_80782D8(struct Sprite *sprite); -void sub_8078CC0(struct Sprite *sprite); -void sub_8078600(struct Sprite *sprite); -void sub_8078504(struct Sprite *sprite); - -void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4); -u8 sub_8079ED4(u8 slot); -s8 sub_8076F98(s8 a); -int sub_807A100(u8 slot, u8 a2); -u16 sub_80790F0(s16 a, s16 b); -void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation); -void sub_807867C(struct Sprite *sprite, s16 a2); -u8 sub_8077EE4(u8 slot, u8 a2); - -void move_anim_8074EE0(struct Sprite *sprite); -bool8 sub_8078718(struct Sprite *sprite); -bool8 sub_8078CE8(struct Sprite *sprite); - -void sub_80CB3A8(u8 taskId); -void sub_80CB438(u8 taskId); -void sub_80CBF5C(u8 taskId); -void sub_80CC358(struct Task* task, u8 taskId); - -void sub_80CA710(struct Sprite* sprite) -{ - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data0 = gBattleAnimArgs[2]; - sprite->data1 = gBattleAnimArgs[3]; - if (GetBankSide(gBattleAnimPlayerMonIndex)) - { - sprite->data3 = -gBattleAnimArgs[4]; - } - else - { - sprite->data3 = gBattleAnimArgs[4]; - } - sprite->data4 = gBattleAnimArgs[5]; - sprite->callback = sub_80CA768; -} - -void sub_80CA768(struct Sprite* sprite) -{ - if (sprite->data0 > 0) - { - sprite->data0--; - sprite->pos2.y = sprite->data2 >> 8; - sprite->data2 += sprite->data1; - sprite->pos2.x = Sin(sprite->data5, sprite->data3); - sprite->data5 = (sprite->data5 + sprite->data4) & 0xFF; - } - else - { - move_anim_8072740(sprite); - } -} - -void sub_80CA7B0(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data0 = gBattleAnimArgs[2]; - sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8074EE0); -} - -void sub_80CA800(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - StartSpriteAnim(sprite, gBattleAnimArgs[3]); - sprite->data0 = gBattleAnimArgs[2]; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); - sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); -} - -void sub_80CA858(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data0 = gBattleAnimArgs[2]; - sprite->data1 = sprite->pos1.x; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - sprite->data3 = sprite->pos1.y; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->data5 = gBattleAnimArgs[3]; - sprite->callback = sub_80CA8B4; - sub_80CA8B4(sprite); -} - -void sub_80CA8B4(struct Sprite* sprite) -{ - if(sub_8078B5C(sprite)) - { - DestroySprite(sprite); - } - else - { - if(sprite->data5 > 0x7F) - { - sprite->subpriority = sub_8079E90(gBattleAnimEnemyMonIndex) + 1; - } - else - { - sprite->subpriority = sub_8079E90(gBattleAnimEnemyMonIndex) + 6; - } - sprite->pos2.x += Sin(sprite->data5, 5); - sprite->pos2.y += Cos(sprite->data5, 14); - sprite->data5 = (sprite->data5 + 15) & 0xFF; - } -} - -void sub_80CA928(u8 taskId) -{ - gTasks[taskId].data[0]--; - if (gTasks[taskId].data[0] == -1) - { - gTasks[taskId].data[1]++; - gTasks[taskId].data[0] = 6; - gBattleAnimArgs[0] = 15; - gBattleAnimArgs[1] = 0; - gBattleAnimArgs[2] = 80; - gBattleAnimArgs[3] = 0; - CreateSpriteAndAnimate(&gSpriteTemplate_83D631C, 0, 0, sub_8079E90(gBattleAnimEnemyMonIndex) + 1); - } - if (gTasks[taskId].data[1] == 15) DestroyAnimVisualTask(taskId); -} - -void sub_80CA9A8(struct Sprite* sprite) -{ - sub_8078764(sprite, 1); - sprite->data0 = gBattleAnimArgs[3]; - sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - sprite->data5 = gBattleAnimArgs[2]; - sub_80786EC(sprite); - sprite->callback = sub_80CA9F8; -} - -void sub_80CA9F8(struct Sprite* sprite) -{ - if (sub_8078718(sprite)) move_anim_8072740(sprite); -} - -void sub_80CAA14(struct Sprite* sprite) -{ - u16 a = Random(); - u16 b; - - StartSpriteAnim(sprite, a & 7); - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - if (GetBankSide(gBattleAnimPlayerMonIndex)) - { - sprite->pos1.x -= 20; - } - else - { - sprite->pos1.x += 20; - } - b = Random(); - sprite->data0 = (b & 31) + 64; - sprite->data1 = sprite->pos1.x; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - sprite->data3 = sprite->pos1.y; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); - sub_8078D60(sprite); - sprite->data5 = Random() & 0xFF; - sprite->data6 = sprite->subpriority; - sprite->callback = sub_80CAACC; - sub_80CAACC(sprite); -} - -void sub_80CAACC(struct Sprite* sprite) -{ - if (sub_8078CE8(sprite)) - { - move_anim_8072740(sprite); - } - else - { - sprite->pos2.y += Cos(sprite->data5, 12); - if (sprite->data5 <= 0x7E) - { - sprite->subpriority = sprite->data6; - } - else - { - sprite->subpriority = sprite->data6 + 1; - } - sprite->data5 = (sprite->data5 + 24) & 0xFF; - } -} - -void sub_80CAB18(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - if(GetBankSide(gBattleAnimPlayerMonIndex)) - { - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } - sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 1) + gBattleAnimArgs[3]; - sprite->data5 = gBattleAnimArgs[5]; - sub_80786EC(sprite); - sprite->callback = sub_80CAB88; -} - -void sub_80CAB88(struct Sprite* sprite) -{ - if(sub_8078718(sprite)) - { - sprite->invisible = 1; - sprite->data0 = 10; - sprite->callback = sub_80782D8; - oamt_set_x3A_32(sprite, sub_80CABC0); - } -} - -void sub_80CABC0(struct Sprite* sprite) -{ - sprite->invisible = 0; - StartSpriteAnim(sprite, 1); - sprite->data0 = 60; - sprite->callback = sub_80782D8; - oamt_set_x3A_32(sprite, move_anim_8072740); -} - -void sub_80CABF8(struct Sprite* sprite) -{ - sub_8078764(sprite, 1); - StartSpriteAnim(sprite, gBattleAnimArgs[4]); - if (gBattleAnimArgs[4] == 1) - { - sprite->oam.objMode = 1; - } - sprite->data0 = gBattleAnimArgs[3]; - sprite->data1 = gBattleAnimArgs[2]; - sprite->callback = sub_80CAC44; - sub_80CAC44(sprite); -} - -void sub_80CAC44(struct Sprite* sprite) -{ - - u8 b; - - sprite->pos2.x = Sin(sprite->data1, 32); - sprite->pos2.y = Cos(sprite->data1, -3) + ((sprite->data2 += 24) >> 8); - if ((u16)(sprite->data1 - 0x40) < 0x80) - { - sprite->oam.priority = (sub_8079ED4(gBattleAnimEnemyMonIndex) & 3); - } - else - { - b = sub_8079ED4(gBattleAnimEnemyMonIndex) + 1; - if ( b > 3) - { - b = 3; - } - sprite->oam.priority = b; - } - sprite->data1 = (sprite->data1 + 2) & 0xFF; - sprite->data0--; - if (sprite->data0 == -1) move_anim_8072740(sprite); -} - -void sub_80CACEC(u8 taskId) -{ - if(IsContest() || !IsDoubleBattle()) - { - DestroyAnimVisualTask(taskId); - } - else - { - if (GetBankIdentity_permutated(gBattleAnimEnemyMonIndex) == 1) - { - REG_BG2CNT_BITFIELD.priority = 3; - } - else - { - REG_BG1CNT_BITFIELD.priority = 1; - } - DestroyAnimVisualTask(taskId); - } -} - -void sub_80CAD54(struct Sprite* sprite) -{ - sub_80787B0(sprite, 0); - sprite->data0 = gBattleAnimArgs[3]; - sprite->data1 = sprite->pos1.x; - sprite->data2 = sprite->pos1.x; - sprite->data3 = sprite->pos1.y; - sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3) + gBattleAnimArgs[2]; - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->data5 = 0x40; - sprite->callback = sub_80CADA8; - sub_80CADA8(sprite); -} - -void sub_80CADA8(struct Sprite* sprite) -{ - if(!sub_8078B5C(sprite)) - { - sprite->pos2.x += Sin(sprite->data5, 32); - sprite->pos2.y += Cos(sprite->data5, -5); - if ((u16)(sprite->data5 - 0x40) < 0x80) - { - sprite->subpriority = sub_8079E90(gBattleAnimPlayerMonIndex) - 1; - } - else - { - sprite->subpriority = sub_8079E90(gBattleAnimPlayerMonIndex) + 1; - } - sprite->data5 = (sprite->data5 + 5) & 0xFF; - } - else - { - move_anim_8072740(sprite); - } -} - -void sub_80CAE20(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - sprite->data0 = gBattleAnimArgs[3]; - sprite->data1 = sprite->pos1.x; - sprite->data2 = sprite->pos1.x; - sprite->data3 = sprite->pos1.y; - sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3) + gBattleAnimArgs[2]; - obj_translate_based_on_private_1_2_3_4(sprite); - sprite->data5 = 0x40; - sprite->callback = sub_80CAE74; - sub_80CAE74(sprite); -} - -void sub_80CAE74(struct Sprite* sprite) -{ - if(!sub_8078B5C(sprite)) - { - sprite->pos2.x += Sin(sprite->data5, 8); - if ((u16)(sprite->data5 - 0x3B) < 5 || (u16)(sprite->data5 - 0xBB) < 5) - { - sprite->oam.matrixNum ^= 8; - } - sprite->data5 = (sprite->data5 + 5) & 0xFF; - } - else - { - move_anim_8072740(sprite); - } -} - -void sub_80CAED8(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - sprite->data0 = gBattleAnimArgs[0]; - sprite->data1 = gBattleAnimArgs[1]; - sprite->data2 = gBattleAnimArgs[2]; - sprite->callback = sub_80CAF20; -} - -void sub_80CAF20(struct Sprite* sprite) -{ - if(!sprite->data2) - { - if(sprite->data1 & 1) - { - sprite->data0 = 0x80; - sprite->data1 = 0; - sprite->data2 = 0; - } - else - { - sprite->data0 = sprite->data1 & 1; - sprite->data1 = sprite->data1 & 1; - sprite->data2 = sprite->data1 & 1; - } - sprite->callback = sub_80CAF6C; - } - else - { - sprite->data2--; - sprite->pos1.x += sprite->data0; - sprite->pos1.y += sprite->data1; - } -} - -void sub_80CAF6C(struct Sprite* sprite) -{ - if(GetBankSide(gBattleAnimPlayerMonIndex)) - { - sprite->pos2.x = -Sin(sprite->data0, 0x19); - } - else - { - sprite->pos2.x = Sin(sprite->data0, 0x19); - } - sprite->data0 = (sprite->data0 + 2) & 0xFF; - sprite->data1++; - if(!(sprite->data1 & 1)) - { - sprite->pos2.y++; - } - if(sprite->data1 > 0x50) - { - move_anim_8072740(sprite); - } -} - -void sub_80CAFD0(struct Sprite* sprite) -{ - sub_80787B0(sprite, 1); - if(GetBankSide(gBattleAnimPlayerMonIndex)) - { - gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } - sprite->data0 = gBattleAnimArgs[4]; - if(!(gBattleAnimArgs[6])) - { - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[3]; - } - else - { - sub_807A3FC(gBattleAnimEnemyMonIndex, 1, &sprite->data2, &sprite->data4); - sprite->data2 += gBattleAnimArgs[2]; - sprite->data4 += gBattleAnimArgs[3]; - } - sprite->data5 = gBattleAnimArgs[5]; - sub_80786EC(sprite); - if(GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) - { - sprite->data0 = 1; - } - else - { - sprite->data0 = 0; - } - sprite->callback = sub_80CB09C; -} - -#ifdef NONMATCHING -void sub_80CB09C(struct Sprite* sprite) -{ - s16 c = 0; - s16 a = sprite->data0; - s16 b = sprite->data7; - sprite->data0 = 1; - sub_8078718(sprite); - sprite->data0 = a; - if (b > 0xC8 && sprite->data7 <= 0x37 && sprite->oam.affineParam == 0) - sprite->oam.affineParam++; - if (sprite->oam.affineParam != 0 && sprite->data0 != 0) - { - sprite->invisible ^= 1; - sprite->oam.affineParam++; - if(sprite->oam.affineParam == 0x1E) - { - c = 1; - } - } - if((sprite->pos1.x + sprite->pos2.x + 16) <= 0x110 && (sprite->pos1.y + sprite->pos2.y) <= 0xA0 && (sprite->pos1.y + sprite->pos2.y) < -16) - { - c = 1; - } - if (!c) move_anim_8072740(sprite); -} -#else -__attribute__((naked)) -void sub_80CB09C(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r6, r0, 0\n\ - movs r7, 0\n\ - ldrh r5, [r6, 0x2E]\n\ - ldrh r4, [r6, 0x3C]\n\ - movs r0, 0x1\n\ - strh r0, [r6, 0x2E]\n\ - adds r0, r6, 0\n\ - bl sub_8078718\n\ - ldrh r0, [r6, 0x3C]\n\ - strh r5, [r6, 0x2E]\n\ - lsls r4, 16\n\ - asrs r4, 16\n\ - cmp r4, 0xC8\n\ - ble _080CB0CE\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x37\n\ - bgt _080CB0CE\n\ - ldrh r0, [r6, 0x6]\n\ - cmp r0, 0\n\ - bne _080CB0D4\n\ - adds r0, 0x1\n\ - strh r0, [r6, 0x6]\n\ -_080CB0CE:\n\ - ldrh r0, [r6, 0x6]\n\ - cmp r0, 0\n\ - beq _080CB106\n\ -_080CB0D4:\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r6, r1]\n\ - cmp r0, 0\n\ - beq _080CB106\n\ - adds r3, r6, 0\n\ - adds r3, 0x3E\n\ - ldrb r2, [r3]\n\ - lsls r0, r2, 29\n\ - lsrs r0, 31\n\ - movs r1, 0x1\n\ - eors r1, r0\n\ - lsls r1, 2\n\ - movs r0, 0x5\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r3]\n\ - ldrh r0, [r6, 0x6]\n\ - adds r0, 0x1\n\ - strh r0, [r6, 0x6]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1E\n\ - bne _080CB106\n\ - movs r7, 0x1\n\ -_080CB106:\n\ - movs r2, 0x20\n\ - ldrsh r0, [r6, r2]\n\ - movs r2, 0x24\n\ - ldrsh r1, [r6, r2]\n\ - adds r0, r1\n\ - adds r0, 0x10\n\ - movs r1, 0x88\n\ - lsls r1, 1\n\ - cmp r0, r1\n\ - bhi _080CB130\n\ - movs r0, 0x22\n\ - ldrsh r1, [r6, r0]\n\ - movs r2, 0x26\n\ - ldrsh r0, [r6, r2]\n\ - adds r1, r0\n\ - cmp r1, 0xA0\n\ - bgt _080CB130\n\ - movs r0, 0x10\n\ - negs r0, r0\n\ - cmp r1, r0\n\ - bge _080CB132\n\ -_080CB130:\n\ - movs r7, 0x1\n\ -_080CB132:\n\ - cmp r7, 0\n\ - beq _080CB13C\n\ - adds r0, r6, 0\n\ - bl move_anim_8072740\n\ -_080CB13C:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif - -void sub_80CB144(struct Sprite* sprite) -{ - if(!IsContest() && IsDoubleBattle() == TRUE) - { - sub_807A3FC(gBattleAnimEnemyMonIndex, 1, &sprite->pos1.x, &sprite->pos1.y); - } - sprite->pos1.y += 32; - sprite->data0 = gBattleAnimArgs[0]; - sprite->data1 = gBattleAnimArgs[1]; - sprite->data2 = gBattleAnimArgs[2]; - sprite->data3 = gBattleAnimArgs[3]; - sprite->data4 = gBattleAnimArgs[4]; - sprite->callback = sub_80CB1A4; -} - -void sub_80CB1A4(struct Sprite* sprite) -{ - if(sprite->data1 == 0xFF) - { - sprite->pos1.y -= 2; - } - else if(sprite->data1 > 0) - { - sprite->pos1.y -= 2; - sprite->data1 -= 2; - } - sprite->data5 += sprite->data2; - if(sprite->data0 < sprite->data4) sprite->data5 += sprite->data2; - sprite->data5 &= 0xFF; - sprite->pos2.x = Cos(sprite->data5, sprite->data3); - sprite->pos2.y = Sin(sprite->data5, 5); - if(sprite->data5 <= 0x7F) - { - sprite->oam.priority = sub_8079ED4(gBattleAnimEnemyMonIndex) - 1; - } - else - { - sprite->oam.priority = sub_8079ED4(gBattleAnimEnemyMonIndex) + 1; - } - sprite->data0--; - if(!sprite->data0) move_anim_8072740(sprite); -} - -void sub_80CB25C(struct Sprite* sprite) -{ - sub_8078764(sprite, 0); - sprite->affineAnimPaused = 1; - StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); - sprite->data6 = gBattleAnimArgs[2]; - sprite->data7 = gBattleAnimArgs[3]; - sprite->callback = sub_80CB298; -} - -void sub_80CB298(struct Sprite* sprite) -{ - if((u16)gBattleAnimArgs[7] == 0xFFFF) - { - sprite->affineAnimPaused = 0; - obj_id_for_side_relative_to_move(1); - sprite->data0 = 0x100; - sprite->callback = sub_80CB2D4; - } -} - -void sub_80CB2D4(struct Sprite* sprite) -{ - obj_id_for_side_relative_to_move(1); - if(!sprite->data2) - { - sprite->data0 += 11; - } - else - { - sprite->data0 -= 11; - } - sprite->data1++; - if(sprite->data1 == 6) - { - sprite->data1 = 0; - sprite->data2 ^= 1; - } - if(sprite->affineAnimEnded) - { - sprite->data7--; - if(sprite->data7 > 0) - { - StartSpriteAffineAnim(sprite, sprite->data6); - } - else - { - move_anim_8072740(sprite); - } - } -} - -void sub_80CB340(u8 taskId) -{ - u8 spriteId = obj_id_for_side_relative_to_move(1); - if(gSprites[spriteId].invisible) - { - DestroyAnimVisualTask(taskId); - } - else - { - sub_8078E70(spriteId, 1); - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[11] = 256; - gTasks[taskId].func = sub_80CB3A8; - } -} - -void sub_80CB3A8(u8 taskId) -{ - u8 spriteId = obj_id_for_side_relative_to_move(1); - gTasks[taskId].data[10] += gTasks[taskId].data[0]; - gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8; - if(GetBankSide(gBattleAnimEnemyMonIndex)) - { - gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; - } - gTasks[taskId].data[11] += 16; - obj_id_set_rotscale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0); - sub_8079A64(spriteId); - gTasks[taskId].data[1]--; - if(!gTasks[taskId].data[1]) - { - gTasks[taskId].data[0] = 0; - gTasks[taskId].func = sub_80CB438; - } -} - -#ifdef NONMATCHING -void sub_80CB438(u8 taskId) -{ - if((u16)gBattleAnimArgs[7] == 0xFFFF) - { - if(!gTasks[taskId].data[0]) - { - u8 spriteId = obj_id_for_side_relative_to_move(1); - sub_8078F40(spriteId); - gSprites[spriteId].pos2.x = 0; - gSprites[spriteId].pos2.y = 0; - gTasks[taskId].data[0]++; - } - else - { - gTasks[taskId].data[0]++; - - } - } - else if(gTasks[taskId].data[0]) - { - gTasks[taskId].data[0]++; - } - if(gTasks[taskId].data[0] == 3) DestroyAnimVisualTask(taskId); -} -#else -__attribute__((naked)) -void sub_80CB438(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - ldr r0, _080CB484 @ =gBattleAnimArgs\n\ - ldrh r1, [r0, 0xE]\n\ - ldr r0, _080CB488 @ =0x0000ffff\n\ - cmp r1, r0\n\ - bne _080CB494\n\ - ldr r0, _080CB48C @ =gTasks\n\ - lsls r2, r3, 2\n\ - adds r1, r2, r3\n\ - lsls r1, 3\n\ - adds r6, r1, r0\n\ - movs r1, 0x8\n\ - ldrsh r5, [r6, r1]\n\ - adds r4, r0, 0\n\ - cmp r5, 0\n\ - bne _080CB4A8\n\ - movs r0, 0x1\n\ - bl obj_id_for_side_relative_to_move\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - adds r0, r4, 0\n\ - bl sub_8078F40\n\ - ldr r1, _080CB490 @ =gSprites\n\ - lsls r0, r4, 4\n\ - adds r0, r4\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - strh r5, [r0, 0x24]\n\ - strh r5, [r0, 0x26]\n\ - ldrh r0, [r6, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r6, 0x8]\n\ - b _080CB4C2\n\ - .align 2, 0\n\ -_080CB484: .4byte gBattleAnimArgs\n\ -_080CB488: .4byte 0x0000ffff\n\ -_080CB48C: .4byte gTasks\n\ -_080CB490: .4byte gSprites\n\ -_080CB494:\n\ - ldr r1, _080CB4C8 @ =gTasks\n\ - lsls r2, r3, 2\n\ - adds r0, r2, r3\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r4, 0x8\n\ - ldrsh r0, [r0, r4]\n\ - adds r4, r1, 0\n\ - cmp r0, 0\n\ - beq _080CB4C2\n\ -_080CB4A8:\n\ - adds r1, r2, r3\n\ - lsls r1, 3\n\ - adds r1, r4\n\ - ldrh r0, [r1, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r1, 0x8]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x3\n\ - bne _080CB4C2\n\ - adds r0, r3, 0\n\ - bl DestroyAnimVisualTask\n\ -_080CB4C2:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080CB4C8: .4byte gTasks\n\ - .syntax divided\n"); -} -#endif - -void sub_80CB4CC(struct Sprite* sprite) -{ - switch(sprite->data0) - { - case 0: - { - if(GetBankSide(gBattleAnimEnemyMonIndex) == 0) - { - s16 a = gBattleAnimArgs[0]; - gBattleAnimArgs[0] = -a; - } - sprite->pos1.x = sub_8077ABC(gBattleAnimEnemyMonIndex, 0) + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077ABC(gBattleAnimEnemyMonIndex, 1) + gBattleAnimArgs[1]; - sprite->invisible = 1; - sprite->data0++; - break; - } - case 1: - { - sprite->invisible = 0; - if(sprite->affineAnimEnded) - { - ChangeSpriteAffineAnim(sprite, 1); - sprite->data0 = 25; - sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - sprite->callback = sub_8078CC0; - oamt_set_x3A_32(sprite, move_anim_8072740); - break; - } - } - } -} - -void sub_80CB59C(struct Sprite* sprite) -{ - if(!sprite->data0) - { - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 1); - sprite->pos2.x = gBattleAnimArgs[0]; - sprite->pos2.y = gBattleAnimArgs[1]; - sprite->subpriority = gBattleAnimArgs[2] + 30; - StartSpriteAnim(sprite, gBattleAnimArgs[3]); - sprite->data2 = gBattleAnimArgs[4]; - sprite->data0++; - if((sprite->pos1.y + sprite->pos2.y) > 120) - { - sprite->pos1.y += -120 + (sprite->pos2.y + sprite->pos1.y); - } - } - sprite->callback = sub_80CB710; -} - -#ifdef NONMATCHING -void sub_80CB620(struct Sprite* sprite) -{ - u8 p1 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - u8 p2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - u8 e1 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - u8 e2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); - e1 -= p1; - e2 -= p2; - sprite->pos1.x = p1 + ((gBattleAnimArgs[0] * e1) / 100); - sprite->pos1.y = p2 + ((gBattleAnimArgs[0] * e2) / 100); - sprite->pos2.x = gBattleAnimArgs[1]; - sprite->pos2.y = gBattleAnimArgs[2]; - sprite->subpriority = gBattleAnimArgs[3] + 30; - StartSpriteAnim(sprite, gBattleAnimArgs[4]); - sprite->data2 = gBattleAnimArgs[5]; - sprite->callback = sub_80CB710; - gUnknown_03000728[0] = sprite->pos1.x; - gUnknown_03000728[1] = sprite->pos1.y; - gUnknown_03000728[2] = e1; - gUnknown_03000728[3] = e2; -} -#else -__attribute__((naked)) -void sub_80CB620(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - mov r6, r10\n\ - mov r5, r9\n\ - mov r4, r8\n\ - push {r4-r6}\n\ - sub sp, 0x4\n\ - mov r9, r0\n\ - ldr r4, _080CB6FC @ =gBattleAnimPlayerMonIndex\n\ - ldrb r0, [r4]\n\ - movs r1, 0x2\n\ - bl sub_8077ABC\n\ - adds r5, r0, 0\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - ldrb r0, [r4]\n\ - movs r1, 0x3\n\ - bl sub_8077ABC\n\ - mov r8, r0\n\ - mov r0, r8\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - ldr r6, _080CB700 @ =gBattleAnimEnemyMonIndex\n\ - ldrb r0, [r6]\n\ - movs r1, 0x2\n\ - bl sub_8077ABC\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldrb r0, [r6]\n\ - movs r1, 0x3\n\ - bl sub_8077ABC\n\ - adds r2, r0, 0\n\ - lsls r2, 24\n\ - subs r4, r5\n\ - lsls r4, 16\n\ - lsrs r2, 24\n\ - mov r1, r8\n\ - subs r2, r1\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - lsrs r3, r4, 16\n\ - mov r10, r3\n\ - asrs r4, 16\n\ - ldr r6, _080CB704 @ =gBattleAnimArgs\n\ - movs r1, 0\n\ - ldrsh r0, [r6, r1]\n\ - muls r0, r4\n\ - movs r1, 0x64\n\ - str r2, [sp]\n\ - bl __divsi3\n\ - adds r5, r0\n\ - mov r3, r9\n\ - strh r5, [r3, 0x20]\n\ - ldr r2, [sp]\n\ - lsls r0, r2, 16\n\ - asrs r0, 16\n\ - movs r3, 0\n\ - ldrsh r1, [r6, r3]\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - add r8, r0\n\ - mov r1, r8\n\ - mov r0, r9\n\ - strh r1, [r0, 0x22]\n\ - ldrh r0, [r6, 0x2]\n\ - mov r3, r9\n\ - strh r0, [r3, 0x24]\n\ - ldrh r0, [r6, 0x4]\n\ - strh r0, [r3, 0x26]\n\ - ldrb r0, [r6, 0x6]\n\ - adds r0, 0x1E\n\ - mov r1, r9\n\ - adds r1, 0x43\n\ - strb r0, [r1]\n\ - ldrb r1, [r6, 0x8]\n\ - mov r0, r9\n\ - bl StartSpriteAnim\n\ - ldrh r0, [r6, 0xA]\n\ - mov r1, r9\n\ - strh r0, [r1, 0x32]\n\ - ldr r0, _080CB708 @ =sub_80CB710\n\ - str r0, [r1, 0x1C]\n\ - ldr r1, _080CB70C @ =gUnknown_03000728\n\ - mov r3, r9\n\ - ldrh r0, [r3, 0x20]\n\ - strh r0, [r1]\n\ - ldrh r0, [r3, 0x22]\n\ - strh r0, [r1, 0x2]\n\ - mov r0, r10\n\ - strh r0, [r1, 0x4]\n\ - ldr r2, [sp]\n\ - strh r2, [r1, 0x6]\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080CB6FC: .4byte gBattleAnimPlayerMonIndex\n\ -_080CB700: .4byte gBattleAnimEnemyMonIndex\n\ -_080CB704: .4byte gBattleAnimArgs\n\ -_080CB708: .4byte sub_80CB710\n\ -_080CB70C: .4byte gUnknown_03000728\n\ - .syntax divided\n"); -} -#endif - -void sub_80CB710(struct Sprite* sprite) -{ - if(++sprite->data0 > (sprite->data2 - 10)) - { - sprite->invisible = sprite->data0 % 2; - } - if(sprite->data0 > sprite->data2) move_anim_8072740(sprite); -} - -void sub_80CB768(struct Sprite* sprite) -{ - if(!sprite->data0) - { - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2) + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 1) + gBattleAnimArgs[1]; - sprite->data1 = gBattleAnimArgs[2]; - sprite->data2 = gBattleAnimArgs[3]; - sprite->data3 = gBattleAnimArgs[4]; - } - sprite->data0++; - sprite->pos2.x = sprite->data1 * sprite->data0; - sprite->pos2.y = Sin((sprite->data0 * 20) & 0xFF, sprite->data2); - if(sprite->data0 > sprite->data3) move_anim_8072740(sprite); -} - -void sub_80CB7EC(struct Sprite* sprite, s16 c) -{ - s32 a = (sprite->pos1.x * 256) | sprite->pos1.y; - s32 b = (sprite->data6 * 256) | sprite->data7; - c *= 256; - sprite->data5 = a; - sprite->data6 = b; - sprite->data7 = c; -} - -#ifdef NONMATCHING -bool8 sub_80CB814(struct Sprite* sprite) -{ - s32 a = sprite->data5 >> 8; - s16 d = sprite->data5; - s16 b = sprite->data6 >> 8; - s16 e = sprite->data6; - s16 c = sprite->data7 >> 8; - s16 f = c & 0xFF; - if(!b) - { - b = ~32; - } - else if(b == 255) - { - b = 0x110; - } - sprite->pos1.x = ((b - a) * f / a ) + (((e - d) * f) / a); - sprite->pos2.y = d; - f++; - if(f != a) - { - sprite->data7 = (f << 8) | c; - return FALSE; - } - return TRUE; -} -#else -__attribute__((naked)) -bool8 sub_80CB814(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - mov r8, r0\n\ - ldrh r0, [r0, 0x38]\n\ - lsrs r1, r0, 8\n\ - mov r10, r1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - mov r1, r8\n\ - ldrh r0, [r1, 0x3A]\n\ - lsrs r2, r0, 8\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldrh r1, [r1, 0x3C]\n\ - lsls r0, r1, 16\n\ - asrs r0, 24\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - movs r3, 0xFF\n\ - ands r3, r1\n\ - cmp r2, 0\n\ - bne _080CB84E\n\ - movs r2, 0x20\n\ - negs r2, r2\n\ - b _080CB856\n\ -_080CB84E:\n\ - cmp r2, 0xFF\n\ - bne _080CB856\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ -_080CB856:\n\ - mov r0, r9\n\ - subs r4, r0\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - mov r1, r10\n\ - subs r0, r2, r1\n\ - lsls r5, r3, 16\n\ - asrs r5, 16\n\ - muls r0, r5\n\ - lsls r1, r6, 16\n\ - asrs r7, r1, 16\n\ - adds r1, r7, 0\n\ - bl __divsi3\n\ - adds r6, r0, 0\n\ - lsls r4, 16\n\ - asrs r4, 16\n\ - adds r0, r4, 0\n\ - muls r0, r5\n\ - adds r1, r7, 0\n\ - bl __divsi3\n\ - add r6, r10\n\ - mov r1, r8\n\ - strh r6, [r1, 0x20]\n\ - add r0, r9\n\ - strh r0, [r1, 0x22]\n\ - adds r5, 0x1\n\ - lsls r5, 16\n\ - lsrs r3, r5, 16\n\ - asrs r5, 16\n\ - cmp r5, r7\n\ - beq _080CB8A8\n\ - lsls r1, r7, 8\n\ - lsls r0, r3, 16\n\ - asrs r0, 16\n\ - orrs r0, r1\n\ - mov r1, r8\n\ - strh r0, [r1, 0x3C]\n\ - movs r0, 0\n\ - b _080CB8AA\n\ -_080CB8A8:\n\ - movs r0, 0x1\n\ -_080CB8AA:\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif - -void sub_80CB8B8(struct Sprite* sprite) -{ - if(sprite->data0 == 10) - { - StartSpriteAffineAnim(sprite, 1); - } - sprite->data0++; - if(sprite->data0 > 50) move_anim_8072740(sprite); -} - -#ifdef NONMATCHING -void sub_80CB8E8(struct Sprite* sprite) -{ - int temp = ((sprite->data3 * 128) / sprite->data4) + sprite->data0; - int zero = 0; - sprite->data0 = temp; - if(sprite->data0 > 0x7F) - { - sprite->data1++; - sprite->data0 = zero; - } - sprite->pos2.y = Sin(sprite->data0 + 0x80, (sprite->data1 * 8) - 30); - if(!sub_80CB814(sprite)) - { - sprite->pos2.y = zero; - sprite->data0 = zero; - sprite->callback = sub_80CB8B8; - } -} -#else -__attribute__((naked)) -void sub_80CB8E8(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - adds r4, r0, 0\n\ - movs r1, 0x34\n\ - ldrsh r0, [r4, r1]\n\ - lsls r0, 7\n\ - movs r2, 0x36\n\ - ldrsh r1, [r4, r2]\n\ - bl __divsi3\n\ - ldrh r1, [r4, 0x2E]\n\ - adds r1, r0\n\ - movs r5, 0\n\ - strh r1, [r4, 0x2E]\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - cmp r1, 0x7F\n\ - ble _080CB912\n\ - ldrh r0, [r4, 0x30]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x30]\n\ - strh r5, [r4, 0x2E]\n\ -_080CB912:\n\ - ldrh r0, [r4, 0x2E]\n\ - adds r0, 0x80\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - movs r1, 0x30\n\ - ldrsh r2, [r4, r1]\n\ - lsls r2, 3\n\ - movs r1, 0x1E\n\ - subs r1, r2\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - bl Sin\n\ - strh r0, [r4, 0x26]\n\ - adds r0, r4, 0\n\ - bl sub_80CB814\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080CB942\n\ - strh r5, [r4, 0x26]\n\ - strh r5, [r4, 0x2E]\n\ - ldr r0, _080CB948 @ =sub_80CB8B8\n\ - str r0, [r4, 0x1C]\n\ -_080CB942:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080CB948: .4byte sub_80CB8B8\n\ - .syntax divided\n"); -} -#endif - -void sub_80CB94C(struct Sprite* sprite) -{ - s16 e1; - s16 e2; - sub_80787B0(sprite, 0); - e1 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0); - e2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 1); - if((gBattleAnimPlayerMonIndex ^ 2) == gBattleAnimEnemyMonIndex) - { - sprite->data6 = e1; - sprite->data7 = e2 + 10; - sub_80CB7EC(sprite, 0x3C); - sprite->data3 = 1; - } - else - { - sprite->data6 = e1; - sprite->data7 = e2 + 10; - sub_80CB7EC(sprite, 0x3C); - sprite->data3 = 3; - } - sprite->data4 = 0x3C; - sprite->callback = sub_80CB8E8; -} - -void sub_80CB9C4(struct Sprite* sprite) -{ - int zero; - sprite->data0 += ((sprite->data3 * 128) / sprite->data4); - zero = 0; - if(sprite->data0 > 0x7F) - { - sprite->data1++; - sprite->data0 = zero; - } - sprite->pos2.y = Sin(sprite->data0 + 0x80, 30 - sprite->data1 * 8); - if(sub_80CB814(sprite)) - { - sprite->pos2.y = zero; - sprite->data0 = zero; - move_anim_8072740(sprite); - } -} - -void sub_80CBA28(struct Sprite* sprite) -{ - s16 e = sub_8077ABC(gBattleAnimEnemyMonIndex, 1); - if(GetBankSide(gBattleAnimEnemyMonIndex) == 0) - { - sprite->data6 = 0; - sprite->data7 = e + 10; - sub_80CB7EC(sprite, 0x28); - sprite->data3 = 3; - sprite->data4 = 0x3C; - sprite->callback = sub_80CB8E8; - } - else - { - sprite->data6 = 255; - sprite->data7 = e + 10; - if(IsContest()) sprite->data6 = 0; - sub_80CB7EC(sprite, 0x28); - sprite->data3 = 3; - sprite->data4 = 0x3C; - sprite->callback = sub_80CB9C4; - } -} - -void sub_80CBAA4(struct Sprite* sprite) -{ - if(sprite->data0 == 0) - { - sub_8078764(sprite, 0); - sprite->data1 = gBattleAnimArgs[2]; - } - sprite->data0++; - sprite->pos2.y = sprite->data1 * sprite->data0; - if(sprite->animEnded) move_anim_8072740(sprite); -} - -void sub_80CBAE8(struct Sprite* sprite) -{ - s16 p1; - s16 p2; - sub_8078764(sprite, 0); - p1 = sub_8077ABC(gBattleAnimPlayerMonIndex, 0); - p2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 1); - if((gBattleAnimEnemyMonIndex ^ 2) == gBattleAnimPlayerMonIndex) - { - sprite->data6 = p1; - sprite->data7 = p2 + 10; - sub_80CB7EC(sprite, 0x3c); - sprite->data3 = 1; - } - else - { - sprite->data6 = p1; - sprite->data7 = p2 + 10; - sub_80CB7EC(sprite, 0x3c); - sprite->data3 = 3; - } - sprite->data4 = 0x3C; - sprite->callback = sub_80CBB60; -} - -void sub_80CBB60(struct Sprite* sprite) -{ - int zero; - sprite->data0 += ((sprite->data3 * 128) / sprite->data4); - zero = 0; - if(sprite->data0 > 0x7F) - { - sprite->data1++; - sprite->data0 = zero; - } - sprite->pos2.y = Sin(sprite->data0 + 0x80, 30 - sprite->data1 * 8); - if(sprite->pos2.y == 0) - { - PlaySE12WithPanning(0x7D, sub_8076F98(0x3F)); - } - if(sub_80CB814(sprite)) - { - sprite->pos2.y = 0; - sprite->data0 = 0; - sprite->callback = sub_80CB8B8; - PlaySE12WithPanning(0x7D, sub_8076F98(-0x40)); - } -} - -#ifdef NONMATCHING -void sub_80CBBF0(struct Sprite* sprite) -{ - int a; - int b; - if(sprite->data0 == 0) - { - if(!IsContest()) - { - sprite->data1 = gBattleAnimArgs[1]; - sprite->pos1.x = 0x78; - } - else - { - a = gBattleAnimArgs[1] - 32; - b = a; - if(a < 0) - { - b += gBattleAnimArgs[1] + 0xDF; - } - sprite->data1 = b - a; - sprite->pos1.x = 0x46; - - } - sprite->pos1.y = gBattleAnimArgs[0]; - sprite->data2 = gBattleAnimArgs[0]; - sprite->data4 = 20; - sprite->pos2.x = Cos(sprite->data1, 0x3C); - sprite->pos2.y = Sin(sprite->data1, 20); - sprite->callback = sub_80CBC8C; - if((sprite->data1 - 1) <= 0xBE) - { - sprite->subpriority = 30; - } - else - { - sprite->subpriority = 28; - } - } -} -#else -__attribute__((naked)) -void sub_80CBBF0(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - adds r4, r0, 0\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r4, r1]\n\ - cmp r0, 0\n\ - bne _080CBC84\n\ - bl IsContest\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080CBC18\n\ - ldr r0, _080CBC14 @ =gBattleAnimArgs\n\ - ldrh r1, [r0, 0x2]\n\ - strh r1, [r4, 0x30]\n\ - movs r1, 0x78\n\ - strh r1, [r4, 0x20]\n\ - adds r5, r0, 0\n\ - b _080CBC3A\n\ - .align 2, 0\n\ -_080CBC14: .4byte gBattleAnimArgs\n\ -_080CBC18:\n\ - ldr r0, _080CBC74 @ =gBattleAnimArgs\n\ - movs r1, 0x2\n\ - ldrsh r3, [r0, r1]\n\ - adds r1, r3, 0\n\ - subs r1, 0x20\n\ - adds r2, r1, 0\n\ - adds r5, r0, 0\n\ - cmp r1, 0\n\ - bge _080CBC2E\n\ - adds r2, r3, 0\n\ - adds r2, 0xDF\n\ -_080CBC2E:\n\ - asrs r0, r2, 8\n\ - lsls r0, 8\n\ - subs r0, r1, r0\n\ - strh r0, [r4, 0x30]\n\ - movs r0, 0x46\n\ - strh r0, [r4, 0x20]\n\ -_080CBC3A:\n\ - ldrh r0, [r5]\n\ - strh r0, [r4, 0x22]\n\ - strh r0, [r4, 0x32]\n\ - movs r0, 0x14\n\ - strh r0, [r4, 0x36]\n\ - movs r1, 0x30\n\ - ldrsh r0, [r4, r1]\n\ - movs r1, 0x3C\n\ - bl Cos\n\ - strh r0, [r4, 0x24]\n\ - movs r1, 0x30\n\ - ldrsh r0, [r4, r1]\n\ - movs r1, 0x14\n\ - bl Sin\n\ - strh r0, [r4, 0x26]\n\ - ldr r0, _080CBC78 @ =sub_80CBC8C\n\ - str r0, [r4, 0x1C]\n\ - ldrh r0, [r4, 0x30]\n\ - subs r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0xBE\n\ - bhi _080CBC7C\n\ - adds r1, r4, 0\n\ - adds r1, 0x43\n\ - movs r0, 0x1F\n\ - b _080CBC82\n\ - .align 2, 0\n\ -_080CBC74: .4byte gBattleAnimArgs\n\ -_080CBC78: .4byte sub_80CBC8C\n\ -_080CBC7C:\n\ - adds r1, r4, 0\n\ - adds r1, 0x43\n\ - movs r0, 0x1D\n\ -_080CBC82:\n\ - strb r0, [r1]\n\ -_080CBC84:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif - -void sub_80CBC8C(struct Sprite* sprite) -{ - switch(sprite->data3) - { - case 0: - { - if(sprite->data2 > 0x4E) - { - sprite->data3 = 1; - StartSpriteAffineAnim(sprite, 1); - break; - } - else - { - sprite->data2 += sprite->data4 / 10; - sprite->data4 += 3; - sprite->pos1.y = sprite->data2; - break; - } - } - case 1: - { - if(sprite->data3 && sprite->affineAnimEnded) - { - sprite->data0 = 0; - sprite->data2 = 0; - sprite->callback = sub_80CBCF8; - } - break; - } - } -} - - - -void sub_80CBCF8(struct Sprite* sprite) -{ - if(sprite->data2 == gUnknown_083D680C[sprite->data0][1]) - { - if(gUnknown_083D680C[sprite->data0][2] == 0x7F) - { - sprite->data0 = 0; - sprite->callback = sub_80CBDB0; - } - sprite->data2 = 0; - sprite->data0++; - } - else - { - sprite->data2++; - sprite->data1 = (gUnknown_083D680C[sprite->data0][0] * gUnknown_083D680C[sprite->data0][2] + sprite->data1) & 0xFF; - if (!IsContest()) - { - if((u16)(sprite->data1 - 1) <= 0xBE) - { - sprite->subpriority = 31; - } - else - { - sprite->subpriority = 29; - } - } - sprite->pos2.x = Cos(sprite->data1, 0x3C); - sprite->pos2.y = Sin(sprite->data1, 20); - } -} - -void sub_80CBDB0(struct Sprite* sprite) -{ - if(sprite->data0 > 20) move_anim_8072740(sprite); - sprite->invisible = sprite->data0 % 2; - sprite->data0++; -} - -#ifdef NONMATCHING -void sub_80CBDF4(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - task->data[4] = sub_8079E90(gBattleAnimEnemyMonIndex) - 1; - task->data[6] = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - task->data[7] = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); - task->data[10] = sub_807A100(gBattleAnimEnemyMonIndex, 1); - task->data[11] = sub_807A100(gBattleAnimEnemyMonIndex, 0); - if(GetBankSide(gBattleAnimEnemyMonIndex) == 1) - { - task->data[5] = 1; - } - else - { - task->data[5] = -1; - } - task->data[9] = 0x38 - (task->data[5] * 64); - task->data[8] = task->data[7] - task->data[9] + task->data[6]; - task->data[2] = CreateSprite(&gSpriteTemplate_83D6884, task->data[8], task->data[9], task->data[4]); - if(task->data[2] == 0x40) DestroyAnimVisualTask(taskId); - gSprites[task->data[2]].data0 = 10; - gSprites[task->data[2]].data1 = task->data[8]; - gSprites[task->data[2]].data2 = task->data[6] - (((task->data[10] / 2) + 10) * task->data[5]); - gSprites[task->data[2]].data3 = task->data[9]; - gSprites[task->data[2]].data4 = ((task->data[11] / 2) + 10) * task->data[5] + task->data[7]; - gSprites[task->data[2]].data5 = sub_80CC338(&gSprites[task->data[2]]); - sub_80786EC(&gSprites[task->data[2]]); - task->func = sub_80CBF5C; -} -#else -__attribute__((naked)) -void sub_80CBDF4(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r6, r0, 0\n\ - lsls r0, r6, 2\n\ - adds r0, r6\n\ - lsls r0, 3\n\ - ldr r1, _080CBF48 @ =gTasks\n\ - adds r5, r0, r1\n\ - ldr r4, _080CBF4C @ =gBattleAnimEnemyMonIndex\n\ - ldrb r0, [r4]\n\ - bl sub_8079E90\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - subs r0, 0x1\n\ - strh r0, [r5, 0x10]\n\ - ldrb r0, [r4]\n\ - movs r1, 0x2\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r5, 0x14]\n\ - ldrb r0, [r4]\n\ - movs r1, 0x3\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r5, 0x16]\n\ - ldrb r0, [r4]\n\ - movs r1, 0x1\n\ - bl sub_807A100\n\ - strh r0, [r5, 0x1C]\n\ - ldrb r0, [r4]\n\ - movs r1, 0\n\ - bl sub_807A100\n\ - strh r0, [r5, 0x1E]\n\ - ldrb r0, [r4]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - movs r2, 0x1\n\ - negs r2, r2\n\ - adds r1, r2, 0\n\ - cmp r0, 0x1\n\ - bne _080CBE5C\n\ - movs r1, 0x1\n\ -_080CBE5C:\n\ - strh r1, [r5, 0x12]\n\ - movs r3, 0x12\n\ - ldrsh r0, [r5, r3]\n\ - lsls r0, 6\n\ - movs r1, 0x38\n\ - subs r1, r0\n\ - strh r1, [r5, 0x1A]\n\ - ldrh r0, [r5, 0x16]\n\ - subs r0, r1\n\ - ldrh r1, [r5, 0x14]\n\ - adds r0, r1\n\ - strh r0, [r5, 0x18]\n\ - ldr r0, _080CBF50 @ =gSpriteTemplate_83D6884\n\ - movs r2, 0x18\n\ - ldrsh r1, [r5, r2]\n\ - movs r3, 0x1A\n\ - ldrsh r2, [r5, r3]\n\ - ldrb r3, [r5, 0x10]\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r5, 0xC]\n\ - cmp r0, 0x40\n\ - bne _080CBE94\n\ - adds r0, r6, 0\n\ - bl DestroyAnimVisualTask\n\ -_080CBE94:\n\ - ldr r4, _080CBF54 @ =gSprites\n\ - movs r0, 0xC\n\ - ldrsh r1, [r5, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - movs r1, 0xA\n\ - strh r1, [r0, 0x2E]\n\ - movs r2, 0xC\n\ - ldrsh r1, [r5, r2]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - ldrh r1, [r5, 0x18]\n\ - strh r1, [r0, 0x30]\n\ - movs r3, 0xC\n\ - ldrsh r0, [r5, r3]\n\ - lsls r2, r0, 4\n\ - adds r2, r0\n\ - lsls r2, 2\n\ - adds r2, r4\n\ - movs r1, 0x1C\n\ - ldrsh r0, [r5, r1]\n\ - lsrs r1, r0, 31\n\ - adds r0, r1\n\ - asrs r0, 1\n\ - adds r0, 0xA\n\ - movs r3, 0x12\n\ - ldrsh r1, [r5, r3]\n\ - muls r1, r0\n\ - ldrh r0, [r5, 0x14]\n\ - subs r0, r1\n\ - strh r0, [r2, 0x32]\n\ - movs r0, 0xC\n\ - ldrsh r1, [r5, r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - ldrh r1, [r5, 0x1A]\n\ - strh r1, [r0, 0x34]\n\ - movs r1, 0xC\n\ - ldrsh r0, [r5, r1]\n\ - lsls r1, r0, 4\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r4\n\ - movs r2, 0x1E\n\ - ldrsh r0, [r5, r2]\n\ - lsrs r2, r0, 31\n\ - adds r0, r2\n\ - asrs r0, 1\n\ - adds r0, 0xA\n\ - movs r3, 0x12\n\ - ldrsh r2, [r5, r3]\n\ - muls r0, r2\n\ - ldrh r2, [r5, 0x16]\n\ - adds r0, r2\n\ - strh r0, [r1, 0x36]\n\ - movs r3, 0xC\n\ - ldrsh r1, [r5, r3]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - bl sub_80CC338\n\ - movs r1, 0xC\n\ - ldrsh r2, [r5, r1]\n\ - lsls r1, r2, 4\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r4\n\ - strh r0, [r1, 0x38]\n\ - movs r2, 0xC\n\ - ldrsh r1, [r5, r2]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - bl sub_80786EC\n\ - ldr r0, _080CBF58 @ =sub_80CBF5C\n\ - str r0, [r5]\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080CBF48: .4byte gTasks\n\ -_080CBF4C: .4byte gBattleAnimEnemyMonIndex\n\ -_080CBF50: .4byte gSpriteTemplate_83D6884\n\ -_080CBF54: .4byte gSprites\n\ -_080CBF58: .4byte sub_80CBF5C\n\ - .syntax divided\n"); -} -#endif - -void sub_80CBF5C(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - struct Sprite* sprite = &gSprites[task->data[2]]; - int a = task->data[0]; - switch(a) - { - case 4: - { - sub_80CC358(task, taskId); - if(sub_8078718(sprite) == 0) - { - break; - } - else - { - task->data[15] = 5; - task->data[0] = 0xFF; - break; - } - } - case 8: - { - sub_80CC358(task, taskId); - if(sub_8078718(sprite) == 0) - { - break; - } - else - { - task->data[15] = 9; - task->data[0] = 0xFF; - break; - } - } - case 0: - { - sub_80CC358(task, taskId); - if(sub_8078718(sprite) == 0) - { - break; - } - task->data[15] = 1; - task->data[0] = 0xFF; - break; - } - case 1: - { - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data0 = 10; - sprite->data1 = sprite->pos1.x; - sprite->data2 = task->data[6]; - sprite->data3 = sprite->pos1.y; - sprite->data4 = task->data[7]; - sprite->data5 = sub_80CC338(sprite); - task->data[4] += 2; - task->data[3] = a; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - } - case 2: - { - sub_80CC358(task, taskId); - if(sub_8078718(sprite) == 0) - { - break; - } - task->data[15] = 3; - task->data[0] = 0xFF; - break; - } - case 3: - { - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data0 = 10; - sprite->data1 = sprite->pos1.x; - sprite->data2 = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; - sprite->data3 = sprite->pos1.y; - sprite->data4 = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5]; - sprite->data5 = sub_80CC338(sprite); - task->data[3] = 2; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - } - case 5: - { - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data0 = 10; - sprite->data1 = sprite->pos1.x; - sprite->data2 = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5]; - sprite->data3 = sprite->pos1.y; - sprite->data4 = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; - sprite->data5 = sub_80CC338(sprite); - task->data[4] -= 2; - task->data[3] = 3; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - } - case 6: - { - sub_80CC358(task, taskId); - if(sub_8078718(sprite) == 0) - { - break; - } - task->data[15] = 7; - task->data[0] = 0xFF; - break; - } - case 7: - { - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data0 = 10; - sprite->data1 = sprite->pos1.x; - sprite->data2 = task->data[6]; - sprite->data3 = sprite->pos1.y; - sprite->data4 = task->data[7]; - sprite->data5 = sub_80CC338(sprite); - task->data[4] += 2; - task->data[3] = 4; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - } - case 9: - { - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data0 = 10; - sprite->data1 = sprite->pos1.x; - sprite->data2 = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5]; - sprite->data3 = sprite->pos1.y; - sprite->data4 = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5]; - sprite->data5 = sub_80CC338(sprite); - task->data[3] = 5; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - } - case 10: - { - sub_80CC358(task, taskId); - if(sub_8078718(sprite) == 0) - { - break; - } - else - { - task->data[15] = 11; - task->data[0] = 0xFF; - break; - } - } - case 11: - { - sprite->pos1.x += sprite->pos2.x; - sprite->pos1.y += sprite->pos2.y; - sprite->pos2.x = 0; - sprite->pos2.y = 0; - sprite->data0 = 10; - sprite->data1 = sprite->pos1.x; - sprite->data2 = task->data[8]; - sprite->data3 = sprite->pos1.y; - sprite->data4 = task->data[9]; - sprite->data5 = sub_80CC338(sprite); - task->data[4] -= 2; - task->data[3] = 6; - sprite->subpriority = task->data[4]; - StartSpriteAnim(sprite, task->data[3]); - sub_80786EC(sprite); - task->data[0]++; - break; - } - case 12: - { - sub_80CC358(task, taskId); - if(sub_8078718(sprite) != 0) - { - DestroySprite(sprite); - task->data[0]++; - } - break; - } - case 13: - { - if(task->data[12] == 0) - { - DestroyAnimVisualTask(taskId); - break; - } - break; - } - case 255: - { - task->data[1]++; - if(task->data[1] > 5) - { - task->data[1] = 0; - task->data[0] = task->data[15]; - } - } - } -} - -s16 sub_80CC338(struct Sprite* sprite) -{ - s16 var = 8; - if(sprite->data4 < sprite->pos1.y) var = -var; - return var; -} - -void sub_80CC358(struct Task* task, u8 taskId) -{ - task->data[14]++; - if(task->data[14] > 0) - { - u8 spriteId; - s16 spriteX; - s16 spriteY; - task->data[14] = 0; - spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x; - spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y; - spriteId = CreateSprite(&gSpriteTemplate_83D6884, spriteX, spriteY, task->data[4]); - if (spriteId != 0x40) - { - gSprites[spriteId].data6 = taskId; - gSprites[spriteId].data7 = 12; - gTasks[taskId].data[12]++; - gSprites[spriteId].data0 = task->data[13] & 1; - gTasks[taskId].data[13]++; - StartSpriteAnim(&gSprites[spriteId], task->data[3]); - gSprites[spriteId].subpriority = task->data[4]; - gSprites[spriteId].callback = sub_80CC408; - } - } -} - -void sub_80CC408(struct Sprite* sprite) -{ - sprite->data0++; - if (sprite->data0 > 1) - { - sprite->data0 = 0; - sprite->invisible ^= 1; - sprite->data1++; - if(sprite->data1 > 8) - { - gTasks[sprite->data6].data[sprite->data7]--; - DestroySprite(sprite); - } - } -} - -void sub_80CC474(struct Sprite* sprite) -{ - u8 bank; - if (!gBattleAnimArgs[6]) - bank = gBattleAnimPlayerMonIndex; - else - bank = gBattleAnimEnemyMonIndex; - if (GetBankSide(bank) != 0) - { - sprite->data4 = 0; - sprite->data2 = gBattleAnimArgs[3]; - sprite->pos1.x = 0xFFF0; - } - else - { - sprite->data4 = 1; - sprite->data2 = -gBattleAnimArgs[3]; - sprite->pos1.x = 0x100; - } - sprite->data1 = gBattleAnimArgs[1]; - sprite->data0 = gBattleAnimArgs[2]; - sprite->data3 = gBattleAnimArgs[4]; - switch(gBattleAnimArgs[5]) - { - case 0: - { - sprite->pos1.y = gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank); - break; - } - case 1: - { - sprite->pos1.y = gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank) + 1; - break; - } - case 2: - { - sprite->pos1.y = sub_8077ABC(bank, 3) + gBattleAnimArgs[0]; - sprite->oam.priority = sub_8079ED4(bank); - break; - } - case 3: - { - sprite->pos1.y = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[0]; - obj_id_for_side_relative_to_move(1); - sprite->oam.priority = sub_8079ED4(bank) + 1; - break; - } - } - sprite->callback = sub_80CC580; -} - -// why did you make me use gotos WHY -void sub_80CC580(struct Sprite* sprite) -{ - int a = sprite->data7; - sprite->data7++; - sprite->pos2.y = (sprite->data1 * gSineTable[sprite->data0]) >> 8; - sprite->pos2.x = sprite->data2 * a; - sprite->data0 = (sprite->data3 * a) & 0xFF; - if (sprite->data4 == 0) - { - if (sprite->pos2.x + sprite->pos1.x <= 0xF7) return; - else goto END; - } - else if (sprite->data4 != 0 && sprite->pos2.x + sprite->pos1.x <= -16) - { - goto END; - } - else - return; - - END: - move_anim_8074EE0(sprite); -} - -void sub_80CC5F8(u8 taskId) -{ - struct Task* task = &gTasks[taskId]; - switch(task->data[0]) - { - case 0: - { - task->data[8] = IndexOfSpritePaletteTag(0x274f) * 16 + 256; - task->data[12] = IndexOfSpritePaletteTag(0x27b0) * 16 + 256; - task->data[0]++; - break; - } - case 1: - { - task->data[9]++; - if(task->data[9] >= 0) - { - task->data[9] = 0; - BlendPalette(task->data[8], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]); - BlendPalette(task->data[12], 0x10, task->data[10], gUnknown_083D6984[task->data[11]]); - task->data[10]++; - if(task->data[10] == 17) - { - task->data[10] = 0; - task->data[11]++; - if(task->data[11] == 7) task->data[11] = 0; - } - } - break; - } - } - if(gBattleAnimArgs[7] == -1) DestroyAnimVisualTask(taskId); -} - -#ifdef NONMATCHING -void sub_80CC6CC(struct Sprite* sprite) -{ - u8 a; - u8 b; - u8 bank; - int c; - u16 x; - u16 y; - if (gBattleAnimArgs[4] == 0) - { - move_anim_8072740(sprite); - } - else - { - - if (gBattleAnimArgs[0] == 0) bank = gBattleAnimPlayerMonIndex; - else - bank = gBattleAnimEnemyMonIndex; - a = sub_8077ABC(bank, 2); - b = sub_8077ABC(bank, 3); - sprite->data0 = gBattleAnimArgs[4]; - if (gBattleAnimArgs[1] == 0) - { - sprite->pos1.x = gBattleAnimArgs[2] + a; - sprite->pos1.y = gBattleAnimArgs[3] + b; - sprite->data5 = a; - sprite->data6 = b; - } - else - { - sprite->pos1.x = a; - sprite->pos1.y = b; - sprite->data5 = gBattleAnimArgs[2] + a; - sprite->data6 = gBattleAnimArgs[3] + b; - } - x = sprite->pos1.x; - sprite->data1 = x * 16; - y = sprite->pos1.y; - sprite->data2 = y * 16; - sprite->data3 = ((sprite->data5 - sprite->pos1.x) * 16) / gBattleAnimArgs[4]; - sprite->data4 = ((sprite->data6 - sprite->pos1.y) * 16) / gBattleAnimArgs[4]; - c = sub_80790F0(sprite->data5 - x, sprite->data6 - y); - if(IsContest() != 0) c = c + -0x8000; - sub_8078FDC(sprite, 0, 0x100, 0x100, c); - sprite->callback = sub_80CC7D4; - } -} -#else -__attribute__((naked)) -void sub_80CC6CC(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x4\n\ - adds r6, r0, 0\n\ - ldr r1, _080CC6E4 @ =gBattleAnimArgs\n\ - movs r2, 0x8\n\ - ldrsh r0, [r1, r2]\n\ - cmp r0, 0\n\ - bne _080CC6E8\n\ - adds r0, r6, 0\n\ - bl move_anim_8072740\n\ - b _080CC7C2\n\ - .align 2, 0\n\ -_080CC6E4: .4byte gBattleAnimArgs\n\ -_080CC6E8:\n\ - movs r3, 0\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0\n\ - bne _080CC6F8\n\ - ldr r4, _080CC6F4 @ =gBattleAnimPlayerMonIndex\n\ - b _080CC6FA\n\ - .align 2, 0\n\ -_080CC6F4: .4byte gBattleAnimPlayerMonIndex\n\ -_080CC6F8:\n\ - ldr r4, _080CC734 @ =gBattleAnimEnemyMonIndex\n\ -_080CC6FA:\n\ - ldrb r0, [r4]\n\ - movs r1, 0x2\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldrb r0, [r4]\n\ - movs r1, 0x3\n\ - bl sub_8077ABC\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - ldr r0, _080CC738 @ =gBattleAnimArgs\n\ - ldrh r1, [r0, 0x8]\n\ - strh r1, [r6, 0x2E]\n\ - movs r3, 0x2\n\ - ldrsh r1, [r0, r3]\n\ - adds r7, r0, 0\n\ - cmp r1, 0\n\ - bne _080CC73C\n\ - ldrh r0, [r7, 0x4]\n\ - adds r0, r5\n\ - strh r0, [r6, 0x20]\n\ - ldrh r0, [r7, 0x6]\n\ - adds r0, r2\n\ - strh r0, [r6, 0x22]\n\ - strh r5, [r6, 0x38]\n\ - strh r2, [r6, 0x3A]\n\ - b _080CC74C\n\ - .align 2, 0\n\ -_080CC734: .4byte gBattleAnimEnemyMonIndex\n\ -_080CC738: .4byte gBattleAnimArgs\n\ -_080CC73C:\n\ - strh r5, [r6, 0x20]\n\ - strh r2, [r6, 0x22]\n\ - ldrh r0, [r7, 0x4]\n\ - adds r0, r5\n\ - strh r0, [r6, 0x38]\n\ - ldrh r0, [r7, 0x6]\n\ - adds r0, r2\n\ - strh r0, [r6, 0x3A]\n\ -_080CC74C:\n\ - ldrh r4, [r6, 0x20]\n\ - lsls r0, r4, 4\n\ - strh r0, [r6, 0x30]\n\ - ldrh r5, [r6, 0x22]\n\ - lsls r0, r5, 4\n\ - strh r0, [r6, 0x32]\n\ - movs r1, 0x38\n\ - ldrsh r0, [r6, r1]\n\ - movs r2, 0x20\n\ - ldrsh r1, [r6, r2]\n\ - subs r0, r1\n\ - lsls r0, 4\n\ - movs r3, 0x8\n\ - ldrsh r1, [r7, r3]\n\ - bl __divsi3\n\ - strh r0, [r6, 0x34]\n\ - movs r1, 0x3A\n\ - ldrsh r0, [r6, r1]\n\ - movs r2, 0x22\n\ - ldrsh r1, [r6, r2]\n\ - subs r0, r1\n\ - lsls r0, 4\n\ - movs r3, 0x8\n\ - ldrsh r1, [r7, r3]\n\ - bl __divsi3\n\ - strh r0, [r6, 0x36]\n\ - ldrh r0, [r6, 0x38]\n\ - subs r0, r4\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - ldrh r1, [r6, 0x3A]\n\ - subs r1, r5\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - bl sub_80790F0\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - bl IsContest\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080CC7AE\n\ - ldr r1, _080CC7CC @ =0xffff8000\n\ - adds r0, r4, r1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ -_080CC7AE:\n\ - movs r3, 0x80\n\ - lsls r3, 1\n\ - str r4, [sp]\n\ - adds r0, r6, 0\n\ - movs r1, 0\n\ - adds r2, r3, 0\n\ - bl sub_8078FDC\n\ - ldr r0, _080CC7D0 @ =sub_80CC7D4\n\ - str r0, [r6, 0x1C]\n\ -_080CC7C2:\n\ - add sp, 0x4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080CC7CC: .4byte 0xffff8000\n\ -_080CC7D0: .4byte sub_80CC7D4\n\ - .syntax divided\n"); -} -#endif - -void sub_80CC7D4(struct Sprite* sprite) -{ - if(sprite->data0) - { - sprite->data1 += sprite->data3; - sprite->data2 += sprite->data4; - sprite->pos1.x = sprite->data1 >> 4 ; - sprite->pos1.y = sprite->data2 >> 4 ; - sprite->data0--; - } - else - move_anim_8074EE0(sprite); -} - -void sub_80CC810(struct Sprite* sprite) -{ - if(sprite->animEnded) - move_anim_8072740(sprite); -} - -void sub_80CC82C(struct Sprite* sprite) -{ - if(GetBankSide(gBattleAnimPlayerMonIndex) != 0) - { - sprite->pos1.x -= gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - } - else - { - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - } - sprite->callback = sub_8078600; - oamt_set_x3A_32(sprite, move_anim_8072740); -} - -void sub_80CC884(struct Sprite* sprite) -{ - if(GetBankSide(gBattleAnimPlayerMonIndex) == 0) - StartSpriteAnim(sprite, 1); - sprite->callback = sub_80CC810; - sub_807867C(sprite, gBattleAnimArgs[0]); - sprite->pos1.y += gBattleAnimArgs[1]; -} - -void sub_80CC8C8(struct Sprite* sprite) -{ - sprite->pos1.x += gBattleAnimArgs[0]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data0 = gBattleAnimArgs[2]; - sprite->data1 = gBattleAnimArgs[3]; - sprite->data3 = gBattleAnimArgs[4]; - sprite->data5 = gBattleAnimArgs[5]; - StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]); - oamt_set_x3A_32(sprite, move_anim_8074EE0); - sprite->callback = sub_8078504; -} - -void sub_80CC914(struct Sprite* sprite) -{ - sprite->pos1.x = sub_8077ABC(gBattleAnimEnemyMonIndex, 0); - sprite->pos1.y = sub_8077ABC(gBattleAnimEnemyMonIndex, 1); - if(GetBankSide(gBattleAnimEnemyMonIndex) == 0) - sprite->pos1.y += 8; - sprite->callback = sub_80CCB00; - if(gBattleAnimArgs[2] == 0) - sprite->pos1.x += gBattleAnimArgs[0]; - else - { - sprite->pos1.x -= gBattleAnimArgs[0]; - sprite->hFlip = 1; - } - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data1 -= 0x400; - sprite->data2 += 0x400; - sprite->data5 = gBattleAnimArgs[2]; - if(sprite->data5 == 1) - sprite->data1 = -sprite->data1; -} - -void sub_80CC9BC(struct Sprite* sprite) -{ - u8 a; - u8 b; - switch(gBattleAnimArgs[3]) - { - case 1: - { - a = sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 0); - b = sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 1); - break; - } - case 2: - { - a = sub_8077ABC(gBattleAnimEnemyMonIndex, 0); - b = sub_8077ABC(gBattleAnimEnemyMonIndex, 1); - if(b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) - { - a = (sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 0) + a) / 2; - b = (sub_8077ABC(gBattleAnimEnemyMonIndex ^ 2, 1) + b) / 2; - } - break; - } - case 0: - default: - { - a = sub_8077ABC(gBattleAnimEnemyMonIndex, 0); - b = sub_8077ABC(gBattleAnimEnemyMonIndex, 1); - break; - } - } - sprite->pos1.x = a; - sprite->pos1.y = b; - if(GetBankSide(gBattleAnimEnemyMonIndex) == 0) - sprite->pos1.y += 8; - sprite->callback = sub_80CCB00; - if(gBattleAnimArgs[2] == 0) - sprite->pos1.x += gBattleAnimArgs[0]; - else - { - sprite->pos1.x -= gBattleAnimArgs[0]; - sprite->hFlip = 1; - } - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data1 -= 0x400; - sprite->data2 += 0x400; - sprite->data5 = gBattleAnimArgs[2]; - if(sprite->data5 == 1) - sprite->data1 = -sprite->data1; -} - -void sub_80CCB00(struct Sprite* sprite) -{ - sprite->data3 += sprite->data1; - sprite->data4 += sprite->data2; - if(sprite->data5 == 0) - sprite->data1 += 0x18; - else - sprite->data1 -= 0x18; - sprite->data2 -= 0x18; - sprite->pos2.x = sprite->data3 >> 8; - sprite->pos2.y = sprite->data4 >> 8; - sprite->data0++; - if(sprite->data0 == 20) - { - oamt_set_x3A_32(sprite, move_anim_8072740); - sprite->data0 = 3; - sprite->callback = sub_80782D8; - } -} - -void unref_sub_80CCB6C(struct Sprite* sprite) -{ - if(sprite->data2 > 1) - { - if(sprite->data3 & 1) - { - sprite->invisible = 0; - gSprites[sprite->data0].invisible = 0; - gSprites[sprite->data1].invisible = 0; - } - else - { - sprite->invisible = 1; - gSprites[sprite->data0].invisible = 1; - gSprites[sprite->data1].invisible = 1; - } - sprite->data2 = 0; - sprite->data3++; - } - else - { - sprite->data2++; - } - if(sprite->data3 == 10) - { - DestroySprite(&gSprites[sprite->data0]); - DestroySprite(&gSprites[sprite->data1]); - move_anim_8072740(sprite); - } -} - -void sub_80CCC50(struct Sprite* sprite) -{ - sprite->data0 = gBattleAnimArgs[2]; - if(GetBankSide(gBattleAnimPlayerMonIndex) != 0) - sprite->pos1.x -= gBattleAnimArgs[0]; - else - sprite->pos1.x += gBattleAnimArgs[0]; - StartSpriteAnim(sprite, gBattleAnimArgs[5]); - sprite->data1 = -gBattleAnimArgs[3]; - sprite->pos1.y += gBattleAnimArgs[1]; - sprite->data3 = gBattleAnimArgs[4]; - sprite->callback = sub_80CCCB4; - sub_80CCCB4(sprite); -} - -void sub_80CCCB4(struct Sprite* sprite) -{ - sprite->pos2.x = Cos(sprite->data0, 100); - sprite->pos2.y = Sin(sprite->data0, 20); - if(sprite->data0 <= 0x7F) - sprite->subpriority = 0; - else - sprite->subpriority = 14; - sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF; - sprite->data5 += 0x82; - sprite->pos2.y += sprite->data5 >> 8; - sprite->data2++; - if(sprite->data2 == sprite->data3) - move_anim_8072740(sprite); -} - -void sub_80CCD24(struct Sprite* sprite) -{ - if(IsContest() != 0) - { - gBattleAnimArgs[1] += 8; - } - sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 0) + gBattleAnimArgs[0]; - sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 1) + gBattleAnimArgs[1]; - if (GetBankSide(gBattleAnimPlayerMonIndex) == 0 || IsContest()) - sprite->oam.priority = sub_8079ED4(gBattleAnimPlayerMonIndex) + 1; - else - sprite->oam.priority = sub_8079ED4(gBattleAnimPlayerMonIndex); - sprite->data0 = gBattleAnimArgs[2]; - sprite->data2 = (IndexOfSpritePaletteTag(0x2828) << 4) + 0x100; - sprite->data7 = 16; - REG_BLDCNT = 0x3F40; - REG_BLDALPHA = (sprite->data7 << 8) | (16 - sprite->data7); - sprite->callback = sub_80CCE0C; -} - -- cgit v1.2.3 From 8db934fcdcbb0dced900996e860c06b956bec2dc Mon Sep 17 00:00:00 2001 From: golemgalvanize Date: Sun, 13 Aug 2017 19:32:13 -0400 Subject: Update battle_anim_80CA710.s reverted --- asm/battle_anim_80CA710.s | 5068 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 5068 insertions(+) diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index bc41f1d34..fd5b9fb88 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -6,6 +6,5074 @@ .text + thumb_func_start sub_80CA710 +sub_80CA710: @ 80CA710 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080CA744 @ =gBattleAnimArgs + ldrh r0, [r5] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r5, 0x2] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x30] + ldr r0, _080CA748 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CA74C + ldrh r0, [r5, 0x8] + negs r0, r0 + b _080CA74E + .align 2, 0 +_080CA744: .4byte gBattleAnimArgs +_080CA748: .4byte gBattleAnimPlayerMonIndex +_080CA74C: + ldrh r0, [r5, 0x8] +_080CA74E: + strh r0, [r4, 0x34] + ldr r0, _080CA760 @ =gBattleAnimArgs + ldrh r0, [r0, 0xA] + strh r0, [r4, 0x36] + ldr r0, _080CA764 @ =sub_80CA768 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CA760: .4byte gBattleAnimArgs +_080CA764: .4byte sub_80CA768 + thumb_func_end sub_80CA710 + + thumb_func_start sub_80CA768 +sub_80CA768: @ 80CA768 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x2E] + movs r2, 0x2E + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _080CA7A4 + subs r0, r1, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x32] + lsls r0, r1, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r1, r0 + strh r1, [r4, 0x32] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Sin + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x36] + ldrh r1, [r4, 0x38] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080CA7AA +_080CA7A4: + adds r0, r4, 0 + bl move_anim_8072740 +_080CA7AA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CA768 + + thumb_func_start sub_80CA7B0 +sub_80CA7B0: @ 80CA7B0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080CA7F0 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x2E] + ldr r5, _080CA7F4 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080CA7F8 @ =sub_8078B34 + str r0, [r4, 0x1C] + ldr r1, _080CA7FC @ =move_anim_8074EE0 + adds r0, r4, 0 + bl oamt_set_x3A_32 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CA7F0: .4byte gBattleAnimArgs +_080CA7F4: .4byte gBattleAnimPlayerMonIndex +_080CA7F8: .4byte sub_8078B34 +_080CA7FC: .4byte move_anim_8074EE0 + thumb_func_end sub_80CA7B0 + + thumb_func_start sub_80CA800 +sub_80CA800: @ 80CA800 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r5, _080CA848 @ =gBattleAnimArgs + ldrb r1, [r5, 0x6] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldr r5, _080CA84C @ =gBattleAnimEnemyMonIndex + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldr r0, _080CA850 @ =sub_8078B34 + str r0, [r4, 0x1C] + ldr r1, _080CA854 @ =move_anim_8072740 + adds r0, r4, 0 + bl oamt_set_x3A_32 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CA848: .4byte gBattleAnimArgs +_080CA84C: .4byte gBattleAnimEnemyMonIndex +_080CA850: .4byte sub_8078B34 +_080CA854: .4byte move_anim_8072740 + thumb_func_end sub_80CA800 + + thumb_func_start sub_80CA858 +sub_80CA858: @ 80CA858 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r6, _080CA8A8 @ =gBattleAnimArgs + ldrh r0, [r6, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + ldr r5, _080CA8AC @ =gBattleAnimEnemyMonIndex + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + ldrh r0, [r6, 0x6] + strh r0, [r4, 0x38] + ldr r1, _080CA8B0 @ =sub_80CA8B4 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CA8A8: .4byte gBattleAnimArgs +_080CA8AC: .4byte gBattleAnimEnemyMonIndex +_080CA8B0: .4byte sub_80CA8B4 + thumb_func_end sub_80CA858 + + thumb_func_start sub_80CA8B4 +sub_80CA8B4: @ 80CA8B4 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + beq _080CA8CA + adds r0, r4, 0 + bl DestroySprite + b _080CA91E +_080CA8CA: + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + ble _080CA8E4 + ldr r0, _080CA8E0 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl sub_8079E90 + adds r0, 0x1 + b _080CA8EE + .align 2, 0 +_080CA8E0: .4byte gBattleAnimEnemyMonIndex +_080CA8E4: + ldr r0, _080CA924 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl sub_8079E90 + adds r0, 0x6 +_080CA8EE: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x5 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xE + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + adds r0, 0xF + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] +_080CA91E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA924: .4byte gBattleAnimEnemyMonIndex + thumb_func_end sub_80CA8B4 + + thumb_func_start sub_80CA928 +sub_80CA928: @ 80CA928 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080CA998 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + ldrh r0, [r5, 0x8] + subs r0, 0x1 + movs r2, 0 + strh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080CA982 + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + movs r0, 0x6 + strh r0, [r5, 0x8] + ldr r1, _080CA99C @ =gBattleAnimArgs + movs r0, 0xF + strh r0, [r1] + strh r2, [r1, 0x2] + movs r0, 0x50 + strh r0, [r1, 0x4] + strh r2, [r1, 0x6] + ldr r4, _080CA9A0 @ =gSpriteTemplate_83D631C + ldr r0, _080CA9A4 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl sub_8079E90 + adds r3, r0, 0 + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl CreateSpriteAndAnimate +_080CA982: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0xF + bne _080CA990 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080CA990: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CA998: .4byte gTasks +_080CA99C: .4byte gBattleAnimArgs +_080CA9A0: .4byte gSpriteTemplate_83D631C +_080CA9A4: .4byte gBattleAnimEnemyMonIndex + thumb_func_end sub_80CA928 + + thumb_func_start sub_80CA9A8 +sub_80CA9A8: @ 80CA9A8 + push {r4-r6,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r6, _080CA9EC @ =gBattleAnimArgs + ldrh r0, [r6, 0x6] + strh r0, [r4, 0x2E] + ldr r5, _080CA9F0 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x32] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x36] + ldrh r0, [r6, 0x4] + strh r0, [r4, 0x38] + adds r0, r4, 0 + bl sub_80786EC + ldr r0, _080CA9F4 @ =sub_80CA9F8 + str r0, [r4, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CA9EC: .4byte gBattleAnimArgs +_080CA9F0: .4byte gBattleAnimPlayerMonIndex +_080CA9F4: .4byte sub_80CA9F8 + thumb_func_end sub_80CA9A8 + + thumb_func_start sub_80CA9F8 +sub_80CA9F8: @ 80CA9F8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080CAA0C + adds r0, r4, 0 + bl move_anim_8072740 +_080CAA0C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CA9F8 + + thumb_func_start sub_80CAA14 +sub_80CAA14: @ 80CAA14 + push {r4,r5,lr} + adds r5, r0, 0 + bl Random + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0x7 + ands r1, r0 + adds r0, r5, 0 + bl StartSpriteAnim + ldr r4, _080CAA5C @ =gBattleAnimPlayerMonIndex + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CAA60 + ldrh r0, [r5, 0x20] + subs r0, 0x14 + b _080CAA64 + .align 2, 0 +_080CAA5C: .4byte gBattleAnimPlayerMonIndex +_080CAA60: + ldrh r0, [r5, 0x20] + adds r0, 0x14 +_080CAA64: + strh r0, [r5, 0x20] + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1F + ands r0, r1 + adds r0, 0x40 + strh r0, [r5, 0x2E] + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x30] + ldr r4, _080CAAC4 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x22] + strh r0, [r5, 0x34] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + adds r0, r5, 0 + bl sub_8078D60 + bl Random + movs r1, 0xFF + ands r1, r0 + strh r1, [r5, 0x38] + adds r0, r5, 0 + adds r0, 0x43 + ldrb r0, [r0] + strh r0, [r5, 0x3A] + ldr r1, _080CAAC8 @ =sub_80CAACC + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CAAC4: .4byte gBattleAnimEnemyMonIndex +_080CAAC8: .4byte sub_80CAACC + thumb_func_end sub_80CAA14 + + thumb_func_start sub_80CAACC +sub_80CAACC: @ 80CAACC + push {r4,lr} + adds r4, r0, 0 + bl sub_8078CE8 + lsls r0, 24 + cmp r0, 0 + beq _080CAAE2 + adds r0, r4, 0 + bl move_anim_8072740 + b _080CAB12 +_080CAAE2: + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0xC + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7E + bgt _080CAAFE + ldrh r0, [r4, 0x3A] + b _080CAB02 +_080CAAFE: + ldrh r0, [r4, 0x3A] + adds r0, 0x1 +_080CAB02: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r4, 0x38] + adds r0, 0x18 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] +_080CAB12: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CAACC + + thumb_func_start sub_80CAB18 +sub_80CAB18: @ 80CAB18 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080CAB78 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CAB38 + ldr r1, _080CAB7C @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080CAB38: + ldr r4, _080CAB7C @ =gBattleAnimArgs + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x2E] + ldr r5, _080CAB80 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r5] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x4] + adds r0, r1 + strh r0, [r6, 0x32] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r6, 0x36] + ldrh r0, [r4, 0xA] + strh r0, [r6, 0x38] + adds r0, r6, 0 + bl sub_80786EC + ldr r0, _080CAB84 @ =sub_80CAB88 + str r0, [r6, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CAB78: .4byte gBattleAnimPlayerMonIndex +_080CAB7C: .4byte gBattleAnimArgs +_080CAB80: .4byte gBattleAnimEnemyMonIndex +_080CAB84: .4byte sub_80CAB88 + thumb_func_end sub_80CAB18 + + thumb_func_start sub_80CAB88 +sub_80CAB88: @ 80CAB88 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080CABB2 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + movs r0, 0xA + strh r0, [r4, 0x2E] + ldr r0, _080CABB8 @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080CABBC @ =sub_80CABC0 + adds r0, r4, 0 + bl oamt_set_x3A_32 +_080CABB2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CABB8: .4byte sub_80782D8 +_080CABBC: .4byte sub_80CABC0 + thumb_func_end sub_80CAB88 + + thumb_func_start sub_80CABC0 +sub_80CABC0: @ 80CABC0 + push {r4,lr} + adds r4, r0, 0 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAnim + movs r0, 0x3C + strh r0, [r4, 0x2E] + ldr r0, _080CABF0 @ =sub_80782D8 + str r0, [r4, 0x1C] + ldr r1, _080CABF4 @ =move_anim_8072740 + adds r0, r4, 0 + bl oamt_set_x3A_32 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CABF0: .4byte sub_80782D8 +_080CABF4: .4byte move_anim_8072740 + thumb_func_end sub_80CABC0 + + thumb_func_start sub_80CABF8 +sub_80CABF8: @ 80CABF8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_8078764 + ldr r5, _080CAC3C @ =gBattleAnimArgs + ldrb r1, [r5, 0x8] + adds r0, r4, 0 + bl StartSpriteAnim + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + bne _080CAC22 + ldrb r0, [r4, 0x1] + movs r1, 0xD + negs r1, r1 + ands r1, r0 + movs r0, 0x4 + orrs r1, r0 + strb r1, [r4, 0x1] +_080CAC22: + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x30] + ldr r1, _080CAC40 @ =sub_80CAC44 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CAC3C: .4byte gBattleAnimArgs +_080CAC40: .4byte sub_80CAC44 + thumb_func_end sub_80CABF8 + + thumb_func_start sub_80CAC44 +sub_80CAC44: @ 80CAC44 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3 + negs r1, r1 + bl Cos + ldrh r1, [r4, 0x32] + adds r1, 0x18 + strh r1, [r4, 0x32] + lsls r1, 16 + asrs r1, 24 + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080CAC98 + ldr r0, _080CAC94 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + b _080CACBC + .align 2, 0 +_080CAC94: .4byte gBattleAnimEnemyMonIndex +_080CAC98: + ldr r0, _080CACE8 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl sub_8079ED4 + adds r0, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _080CACAC + movs r2, 0x3 +_080CACAC: + movs r0, 0x3 + ands r2, r0 + lsls r2, 2 + ldrb r1, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r1 + orrs r0, r2 +_080CACBC: + strb r0, [r4, 0x5] + ldrh r0, [r4, 0x30] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _080CACE0 + adds r0, r4, 0 + bl move_anim_8072740 +_080CACE0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CACE8: .4byte gBattleAnimEnemyMonIndex + thumb_func_end sub_80CAC44 + + thumb_func_start sub_80CACEC +sub_80CACEC: @ 80CACEC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl IsContest + lsls r0, 24 + cmp r0, 0 + bne _080CAD06 + bl IsDoubleBattle + lsls r0, 24 + cmp r0, 0 + bne _080CAD0E +_080CAD06: + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080CAD4A +_080CAD0E: + ldr r0, _080CAD2C @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl GetBankIdentity_permutated + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CAD34 + ldr r0, _080CAD30 @ =REG_BG2CNT + ldrb r1, [r0] + movs r2, 0x3 + orrs r1, r2 + strb r1, [r0] + b _080CAD44 + .align 2, 0 +_080CAD2C: .4byte gBattleAnimEnemyMonIndex +_080CAD30: .4byte REG_BG2CNT +_080CAD34: + ldr r2, _080CAD50 @ =REG_BG1CNT + ldrb r1, [r2] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080CAD44: + adds r0, r4, 0 + bl DestroyAnimVisualTask +_080CAD4A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CAD50: .4byte REG_BG1CNT + thumb_func_end sub_80CACEC + + thumb_func_start sub_80CAD54 +sub_80CAD54: @ 80CAD54 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + bl sub_80787B0 + ldr r5, _080CAD9C @ =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldr r0, _080CADA0 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x4] + adds r0, r5 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + movs r0, 0x40 + strh r0, [r4, 0x38] + ldr r1, _080CADA4 @ =sub_80CADA8 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CAD9C: .4byte gBattleAnimArgs +_080CADA0: .4byte gBattleAnimPlayerMonIndex +_080CADA4: .4byte sub_80CADA8 + thumb_func_end sub_80CAD54 + + thumb_func_start sub_80CADA8 +sub_80CADA8: @ 80CADA8 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + bne _080CAE14 + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x20 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x5 + negs r1, r1 + bl Cos + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x38] + subs r0, 0x40 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x7F + bhi _080CADF4 + ldr r0, _080CADF0 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl sub_8079E90 + subs r0, 0x1 + b _080CADFE + .align 2, 0 +_080CADF0: .4byte gBattleAnimPlayerMonIndex +_080CADF4: + ldr r0, _080CAE10 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl sub_8079E90 + adds r0, 0x1 +_080CADFE: + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrh r0, [r4, 0x38] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080CAE1A + .align 2, 0 +_080CAE10: .4byte gBattleAnimPlayerMonIndex +_080CAE14: + adds r0, r4, 0 + bl move_anim_8072740 +_080CAE1A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CADA8 + + thumb_func_start sub_80CAE20 +sub_80CAE20: @ 80CAE20 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r5, _080CAE68 @ =gBattleAnimArgs + ldrh r0, [r5, 0x6] + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x20] + strh r0, [r4, 0x30] + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x22] + strh r0, [r4, 0x34] + ldr r0, _080CAE6C @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5, 0x4] + adds r0, r5 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl obj_translate_based_on_private_1_2_3_4 + movs r0, 0x40 + strh r0, [r4, 0x38] + ldr r1, _080CAE70 @ =sub_80CAE74 + str r1, [r4, 0x1C] + adds r0, r4, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CAE68: .4byte gBattleAnimArgs +_080CAE6C: .4byte gBattleAnimPlayerMonIndex +_080CAE70: .4byte sub_80CAE74 + thumb_func_end sub_80CAE20 + + thumb_func_start sub_80CAE74 +sub_80CAE74: @ 80CAE74 + push {r4,lr} + adds r4, r0, 0 + bl sub_8078B5C + lsls r0, 24 + cmp r0, 0 + bne _080CAECC + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r1, 0x8 + bl Sin + ldrh r1, [r4, 0x24] + adds r0, r1 + strh r0, [r4, 0x24] + ldrh r1, [r4, 0x38] + adds r0, r1, 0 + subs r0, 0x3B + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bls _080CAEAC + adds r0, r1, 0 + subs r0, 0xBB + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bhi _080CAEC0 +_080CAEAC: + ldrb r2, [r4, 0x3] + lsls r1, r2, 26 + lsrs r1, 27 + movs r0, 0x8 + eors r1, r0 + lsls r1, 1 + subs r0, 0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] +_080CAEC0: + ldrh r0, [r4, 0x38] + adds r0, 0x5 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + b _080CAED2 +_080CAECC: + adds r0, r4, 0 + bl move_anim_8072740 +_080CAED2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CAE74 + + thumb_func_start sub_80CAED8 +sub_80CAED8: @ 80CAED8 + push {r4,r5,lr} + adds r4, r0, 0 + ldr r5, _080CAF14 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x20] + ldrb r0, [r5] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r4, 0x22] + ldr r1, _080CAF18 @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldr r0, _080CAF1C @ =sub_80CAF20 + str r0, [r4, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CAF14: .4byte gBattleAnimPlayerMonIndex +_080CAF18: .4byte gBattleAnimArgs +_080CAF1C: .4byte sub_80CAF20 + thumb_func_end sub_80CAED8 + + thumb_func_start sub_80CAF20 +sub_80CAF20: @ 80CAF20 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x32] + movs r2, 0x32 + ldrsh r3, [r1, r2] + cmp r3, 0 + bne _080CAF54 + ldrh r0, [r1, 0x30] + movs r2, 0x1 + ands r2, r0 + cmp r2, 0 + beq _080CAF42 + movs r0, 0x80 + strh r0, [r1, 0x2E] + strh r3, [r1, 0x30] + strh r3, [r1, 0x32] + b _080CAF48 +_080CAF42: + strh r2, [r1, 0x2E] + strh r2, [r1, 0x30] + strh r2, [r1, 0x32] +_080CAF48: + ldr r0, _080CAF50 @ =sub_80CAF6C + str r0, [r1, 0x1C] + b _080CAF68 + .align 2, 0 +_080CAF50: .4byte sub_80CAF6C +_080CAF54: + subs r0, 0x1 + strh r0, [r1, 0x32] + ldrh r0, [r1, 0x2E] + ldrh r2, [r1, 0x20] + adds r0, r2 + strh r0, [r1, 0x20] + ldrh r0, [r1, 0x30] + ldrh r2, [r1, 0x22] + adds r0, r2 + strh r0, [r1, 0x22] +_080CAF68: + pop {r0} + bx r0 + thumb_func_end sub_80CAF20 + + thumb_func_start sub_80CAF6C +sub_80CAF6C: @ 80CAF6C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080CAF8C @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CAF90 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl Sin + negs r0, r0 + b _080CAF9A + .align 2, 0 +_080CAF8C: .4byte gBattleAnimPlayerMonIndex +_080CAF90: + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x19 + bl Sin +_080CAF9A: + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x2E] + adds r0, 0x2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080CAFBA + ldrh r0, [r4, 0x26] + adds r0, 0x1 + strh r0, [r4, 0x26] +_080CAFBA: + movs r1, 0x30 + ldrsh r0, [r4, r1] + cmp r0, 0x50 + ble _080CAFC8 + adds r0, r4, 0 + bl move_anim_8072740 +_080CAFC8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CAF6C + + thumb_func_start sub_80CAFD0 +sub_80CAFD0: @ 80CAFD0 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x1 + bl sub_80787B0 + ldr r0, _080CB024 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CAFF0 + ldr r1, _080CB028 @ =gBattleAnimArgs + ldrh r0, [r1, 0x4] + negs r0, r0 + strh r0, [r1, 0x4] +_080CAFF0: + ldr r6, _080CB028 @ =gBattleAnimArgs + ldrh r0, [r6, 0x8] + strh r0, [r5, 0x2E] + movs r1, 0xC + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080CB030 + ldr r4, _080CB02C @ =gBattleAnimEnemyMonIndex + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r6, 0x4] + adds r0, r1 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r6, [r6, 0x6] + adds r0, r6 + b _080CB050 + .align 2, 0 +_080CB024: .4byte gBattleAnimPlayerMonIndex +_080CB028: .4byte gBattleAnimArgs +_080CB02C: .4byte gBattleAnimEnemyMonIndex +_080CB030: + ldr r0, _080CB07C @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + adds r2, r5, 0 + adds r2, 0x32 + adds r3, r5, 0 + adds r3, 0x36 + movs r1, 0x1 + bl sub_807A3FC + ldrh r0, [r6, 0x4] + ldrh r1, [r5, 0x32] + adds r0, r1 + strh r0, [r5, 0x32] + ldrh r0, [r6, 0x6] + ldrh r1, [r5, 0x36] + adds r0, r1 +_080CB050: + strh r0, [r5, 0x36] + ldr r0, _080CB080 @ =gBattleAnimArgs + ldrh r0, [r0, 0xA] + strh r0, [r5, 0x38] + adds r0, r5, 0 + bl sub_80786EC + ldr r0, _080CB084 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl GetBankSide + adds r4, r0, 0 + ldr r0, _080CB07C @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _080CB088 + movs r0, 0x1 + b _080CB08A + .align 2, 0 +_080CB07C: .4byte gBattleAnimEnemyMonIndex +_080CB080: .4byte gBattleAnimArgs +_080CB084: .4byte gBattleAnimPlayerMonIndex +_080CB088: + movs r0, 0 +_080CB08A: + strh r0, [r5, 0x2E] + ldr r0, _080CB098 @ =sub_80CB09C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB098: .4byte sub_80CB09C + thumb_func_end sub_80CAFD0 + + thumb_func_start sub_80CB09C +sub_80CB09C: @ 80CB09C + push {r4-r7,lr} + adds r6, r0, 0 + movs r7, 0 + ldrh r5, [r6, 0x2E] + ldrh r4, [r6, 0x3C] + movs r0, 0x1 + strh r0, [r6, 0x2E] + adds r0, r6, 0 + bl sub_8078718 + ldrh r0, [r6, 0x3C] + strh r5, [r6, 0x2E] + lsls r4, 16 + asrs r4, 16 + cmp r4, 0xC8 + ble _080CB0CE + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x37 + bgt _080CB0CE + ldrh r0, [r6, 0x6] + cmp r0, 0 + bne _080CB0D4 + adds r0, 0x1 + strh r0, [r6, 0x6] +_080CB0CE: + ldrh r0, [r6, 0x6] + cmp r0, 0 + beq _080CB106 +_080CB0D4: + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + beq _080CB106 + adds r3, r6, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r6, 0x6] + adds r0, 0x1 + strh r0, [r6, 0x6] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1E + bne _080CB106 + movs r7, 0x1 +_080CB106: + movs r2, 0x20 + ldrsh r0, [r6, r2] + movs r2, 0x24 + ldrsh r1, [r6, r2] + adds r0, r1 + adds r0, 0x10 + movs r1, 0x88 + lsls r1, 1 + cmp r0, r1 + bhi _080CB130 + movs r0, 0x22 + ldrsh r1, [r6, r0] + movs r2, 0x26 + ldrsh r0, [r6, r2] + adds r1, r0 + cmp r1, 0xA0 + bgt _080CB130 + movs r0, 0x10 + negs r0, r0 + cmp r1, r0 + bge _080CB132 +_080CB130: + movs r7, 0x1 +_080CB132: + cmp r7, 0 + beq _080CB13C + adds r0, r6, 0 + bl move_anim_8072740 +_080CB13C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80CB09C + + thumb_func_start sub_80CB144 +sub_80CB144: @ 80CB144 + push {r4,lr} + adds r4, r0, 0 + bl IsContest + lsls r0, 24 + cmp r0, 0 + bne _080CB170 + bl IsDoubleBattle + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080CB170 + ldr r0, _080CB198 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + movs r1, 0x1 + bl sub_807A3FC +_080CB170: + ldrh r0, [r4, 0x22] + adds r0, 0x20 + strh r0, [r4, 0x22] + ldr r1, _080CB19C @ =gBattleAnimArgs + ldrh r0, [r1] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x32] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x36] + ldr r0, _080CB1A0 @ =sub_80CB1A4 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB198: .4byte gBattleAnimEnemyMonIndex +_080CB19C: .4byte gBattleAnimArgs +_080CB1A0: .4byte sub_80CB1A4 + thumb_func_end sub_80CB144 + + thumb_func_start sub_80CB1A4 +sub_80CB1A4: @ 80CB1A4 + push {r4,r5,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + bne _080CB1BA + ldrh r0, [r4, 0x22] + subs r0, 0x2 + strh r0, [r4, 0x22] + b _080CB1C8 +_080CB1BA: + cmp r0, 0 + ble _080CB1C8 + ldrh r0, [r4, 0x22] + subs r0, 0x2 + strh r0, [r4, 0x22] + subs r0, r1, 0x2 + strh r0, [r4, 0x30] +_080CB1C8: + ldrh r3, [r4, 0x32] + ldrh r5, [r4, 0x38] + adds r2, r3, r5 + strh r2, [r4, 0x38] + movs r0, 0x2E + ldrsh r1, [r4, r0] + movs r5, 0x36 + ldrsh r0, [r4, r5] + cmp r1, r0 + bge _080CB1E0 + adds r0, r2, r3 + strh r0, [r4, 0x38] +_080CB1E0: + ldrh r1, [r4, 0x38] + movs r0, 0xFF + ands r0, r1 + strh r0, [r4, 0x38] + movs r1, 0x38 + ldrsh r0, [r4, r1] + movs r2, 0x34 + ldrsh r1, [r4, r2] + bl Cos + strh r0, [r4, 0x24] + movs r5, 0x38 + ldrsh r0, [r4, r5] + movs r1, 0x5 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x38 + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080CB220 + ldr r0, _080CB21C @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + b _080CB22E + .align 2, 0 +_080CB21C: .4byte gBattleAnimEnemyMonIndex +_080CB220: + ldr r0, _080CB258 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 +_080CB22E: + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] + ldrh r0, [r4, 0x2E] + subs r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + cmp r0, 0 + bne _080CB252 + adds r0, r4, 0 + bl move_anim_8072740 +_080CB252: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB258: .4byte gBattleAnimEnemyMonIndex + thumb_func_end sub_80CB1A4 + + thumb_func_start sub_80CB25C +sub_80CB25C: @ 80CB25C + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8078764 + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r4, _080CB290 @ =gBattleAnimArgs + ldrb r1, [r4, 0x4] + adds r0, r5, 0 + bl StartSpriteAffineAnim + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x3A] + ldrh r0, [r4, 0x6] + strh r0, [r5, 0x3C] + ldr r0, _080CB294 @ =sub_80CB298 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB290: .4byte gBattleAnimArgs +_080CB294: .4byte sub_80CB298 + thumb_func_end sub_80CB25C + + thumb_func_start sub_80CB298 +sub_80CB298: @ 80CB298 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080CB2C8 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080CB2CC @ =0x0000ffff + cmp r1, r0 + bne _080CB2C2 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + bl obj_id_for_side_relative_to_move + movs r0, 0x80 + lsls r0, 1 + strh r0, [r4, 0x2E] + ldr r0, _080CB2D0 @ =sub_80CB2D4 + str r0, [r4, 0x1C] +_080CB2C2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB2C8: .4byte gBattleAnimArgs +_080CB2CC: .4byte 0x0000ffff +_080CB2D0: .4byte sub_80CB2D4 + thumb_func_end sub_80CB298 + + thumb_func_start sub_80CB2D4 +sub_80CB2D4: @ 80CB2D4 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + bl obj_id_for_side_relative_to_move + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080CB2EC + ldrh r0, [r4, 0x2E] + adds r0, 0xB + b _080CB2F0 +_080CB2EC: + ldrh r0, [r4, 0x2E] + subs r0, 0xB +_080CB2F0: + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x6 + bne _080CB30C + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + movs r1, 0x1 + eors r0, r1 + strh r0, [r4, 0x32] +_080CB30C: + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080CB33A + ldrh r0, [r4, 0x3C] + subs r0, 0x1 + strh r0, [r4, 0x3C] + lsls r0, 16 + cmp r0, 0 + ble _080CB334 + ldrh r1, [r4, 0x3A] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAffineAnim + b _080CB33A +_080CB334: + adds r0, r4, 0 + bl move_anim_8072740 +_080CB33A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CB2D4 + + thumb_func_start sub_80CB340 +sub_80CB340: @ 80CB340 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r0, 0x1 + bl obj_id_for_side_relative_to_move + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080CB36C @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + bge _080CB370 + adds r0, r4, 0 + bl DestroyAnimVisualTask + b _080CB396 + .align 2, 0 +_080CB36C: .4byte gSprites +_080CB370: + adds r0, r2, 0 + movs r1, 0x1 + bl sub_8078E70 + ldr r1, _080CB39C @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + ldr r2, _080CB3A0 @ =gBattleAnimArgs + ldrh r1, [r2] + strh r1, [r0, 0x8] + ldrh r1, [r2, 0x2] + strh r1, [r0, 0xA] + movs r1, 0x80 + lsls r1, 1 + strh r1, [r0, 0x1E] + ldr r1, _080CB3A4 @ =sub_80CB3A8 + str r1, [r0] +_080CB396: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB39C: .4byte gTasks +_080CB3A0: .4byte gBattleAnimArgs +_080CB3A4: .4byte sub_80CB3A8 + thumb_func_end sub_80CB340 + + thumb_func_start sub_80CB3A8 +sub_80CB3A8: @ 80CB3A8 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl obj_id_for_side_relative_to_move + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + ldr r1, _080CB428 @ =gTasks + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r4, r0, r1 + ldrh r1, [r4, 0x8] + ldrh r0, [r4, 0x1C] + adds r1, r0 + strh r1, [r4, 0x1C] + ldr r2, _080CB42C @ =gSprites + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r5, r0, r2 + lsls r1, 16 + asrs r1, 24 + strh r1, [r5, 0x24] + ldr r0, _080CB430 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CB3F2 + ldrh r0, [r5, 0x24] + negs r0, r0 + strh r0, [r5, 0x24] +_080CB3F2: + ldrh r0, [r4, 0x1E] + adds r0, 0x10 + strh r0, [r4, 0x1E] + movs r0, 0x1E + ldrsh r2, [r4, r0] + adds r0, r6, 0 + adds r1, r2, 0 + movs r3, 0 + bl obj_id_set_rotscale + adds r0, r6, 0 + bl sub_8079A64 + ldrh r0, [r4, 0xA] + subs r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + bne _080CB420 + strh r0, [r4, 0x8] + ldr r0, _080CB434 @ =sub_80CB438 + str r0, [r4] +_080CB420: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB428: .4byte gTasks +_080CB42C: .4byte gSprites +_080CB430: .4byte gBattleAnimEnemyMonIndex +_080CB434: .4byte sub_80CB438 + thumb_func_end sub_80CB3A8 + + thumb_func_start sub_80CB438 +sub_80CB438: @ 80CB438 + push {r4-r6,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _080CB484 @ =gBattleAnimArgs + ldrh r1, [r0, 0xE] + ldr r0, _080CB488 @ =0x0000ffff + cmp r1, r0 + bne _080CB494 + ldr r0, _080CB48C @ =gTasks + lsls r2, r3, 2 + adds r1, r2, r3 + lsls r1, 3 + adds r6, r1, r0 + movs r1, 0x8 + ldrsh r5, [r6, r1] + adds r4, r0, 0 + cmp r5, 0 + bne _080CB4A8 + movs r0, 0x1 + bl obj_id_for_side_relative_to_move + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8078F40 + ldr r1, _080CB490 @ =gSprites + lsls r0, r4, 4 + adds r0, r4 + lsls r0, 2 + adds r0, r1 + strh r5, [r0, 0x24] + strh r5, [r0, 0x26] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] + b _080CB4C2 + .align 2, 0 +_080CB484: .4byte gBattleAnimArgs +_080CB488: .4byte 0x0000ffff +_080CB48C: .4byte gTasks +_080CB490: .4byte gSprites +_080CB494: + ldr r1, _080CB4C8 @ =gTasks + lsls r2, r3, 2 + adds r0, r2, r3 + lsls r0, 3 + adds r0, r1 + movs r4, 0x8 + ldrsh r0, [r0, r4] + adds r4, r1, 0 + cmp r0, 0 + beq _080CB4C2 +_080CB4A8: + adds r1, r2, r3 + lsls r1, 3 + adds r1, r4 + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bne _080CB4C2 + adds r0, r3, 0 + bl DestroyAnimVisualTask +_080CB4C2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB4C8: .4byte gTasks + thumb_func_end sub_80CB438 + + thumb_func_start sub_80CB4CC +sub_80CB4CC: @ 80CB4CC + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080CB4DE + cmp r0, 0x1 + beq _080CB538 + b _080CB58A +_080CB4DE: + ldr r6, _080CB530 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r6] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080CB4F6 + ldr r1, _080CB534 @ =gBattleAnimArgs + movs r2, 0 + ldrsh r0, [r1, r2] + negs r0, r0 + strh r0, [r1] +_080CB4F6: + ldrb r0, [r6] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080CB534 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + b _080CB58A + .align 2, 0 +_080CB530: .4byte gBattleAnimEnemyMonIndex +_080CB534: .4byte gBattleAnimArgs +_080CB538: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080CB58A + adds r0, r5, 0 + movs r1, 0x1 + bl ChangeSpriteAffineAnim + movs r0, 0x19 + strh r0, [r5, 0x2E] + ldr r4, _080CB590 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x32] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x36] + ldr r0, _080CB594 @ =sub_8078CC0 + str r0, [r5, 0x1C] + ldr r1, _080CB598 @ =move_anim_8072740 + adds r0, r5, 0 + bl oamt_set_x3A_32 +_080CB58A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB590: .4byte gBattleAnimPlayerMonIndex +_080CB594: .4byte sub_8078CC0 +_080CB598: .4byte move_anim_8072740 + thumb_func_end sub_80CB4CC + + thumb_func_start sub_80CB59C +sub_80CB59C: @ 80CB59C + push {r4,r5,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _080CB608 + ldr r4, _080CB614 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldr r4, _080CB618 @ =gBattleAnimArgs + ldrh r0, [r4] + strh r0, [r5, 0x24] + ldrh r0, [r4, 0x2] + strh r0, [r5, 0x26] + ldrb r0, [r4, 0x4] + adds r0, 0x1E + adds r1, r5, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r4, 0x6] + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x2E] + adds r0, 0x1 + strh r0, [r5, 0x2E] + movs r2, 0x22 + ldrsh r0, [r5, r2] + movs r2, 0x26 + ldrsh r1, [r5, r2] + adds r0, r1 + cmp r0, 0x78 + ble _080CB608 + ldrh r0, [r5, 0x22] + adds r1, r0, 0 + subs r1, 0x78 + ldrh r2, [r5, 0x26] + adds r0, r2 + adds r1, r0 + strh r1, [r5, 0x22] +_080CB608: + ldr r0, _080CB61C @ =sub_80CB710 + str r0, [r5, 0x1C] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB614: .4byte gBattleAnimPlayerMonIndex +_080CB618: .4byte gBattleAnimArgs +_080CB61C: .4byte sub_80CB710 + thumb_func_end sub_80CB59C + + thumb_func_start sub_80CB620 +sub_80CB620: @ 80CB620 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x4 + mov r9, r0 + ldr r4, _080CB6FC @ =gBattleAnimPlayerMonIndex + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + mov r8, r0 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r6, _080CB700 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r6] + movs r1, 0x2 + bl sub_8077ABC + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldrb r0, [r6] + movs r1, 0x3 + bl sub_8077ABC + adds r2, r0, 0 + lsls r2, 24 + subs r4, r5 + lsls r4, 16 + lsrs r2, 24 + mov r1, r8 + subs r2, r1 + lsls r2, 16 + lsrs r2, 16 + lsrs r3, r4, 16 + mov r10, r3 + asrs r4, 16 + ldr r6, _080CB704 @ =gBattleAnimArgs + movs r1, 0 + ldrsh r0, [r6, r1] + muls r0, r4 + movs r1, 0x64 + str r2, [sp] + bl __divsi3 + adds r5, r0 + mov r3, r9 + strh r5, [r3, 0x20] + ldr r2, [sp] + lsls r0, r2, 16 + asrs r0, 16 + movs r3, 0 + ldrsh r1, [r6, r3] + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + add r8, r0 + mov r1, r8 + mov r0, r9 + strh r1, [r0, 0x22] + ldrh r0, [r6, 0x2] + mov r3, r9 + strh r0, [r3, 0x24] + ldrh r0, [r6, 0x4] + strh r0, [r3, 0x26] + ldrb r0, [r6, 0x6] + adds r0, 0x1E + mov r1, r9 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0x8] + mov r0, r9 + bl StartSpriteAnim + ldrh r0, [r6, 0xA] + mov r1, r9 + strh r0, [r1, 0x32] + ldr r0, _080CB708 @ =sub_80CB710 + str r0, [r1, 0x1C] + ldr r1, _080CB70C @ =gUnknown_03000728 + mov r3, r9 + ldrh r0, [r3, 0x20] + strh r0, [r1] + ldrh r0, [r3, 0x22] + strh r0, [r1, 0x2] + mov r0, r10 + strh r0, [r1, 0x4] + ldr r2, [sp] + strh r2, [r1, 0x6] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB6FC: .4byte gBattleAnimPlayerMonIndex +_080CB700: .4byte gBattleAnimEnemyMonIndex +_080CB704: .4byte gBattleAnimArgs +_080CB708: .4byte sub_80CB710 +_080CB70C: .4byte gUnknown_03000728 + thumb_func_end sub_80CB620 + + thumb_func_start sub_80CB710 +sub_80CB710: @ 80CB710 + push {lr} + adds r3, r0, 0 + ldrh r1, [r3, 0x2E] + adds r1, 0x1 + strh r1, [r3, 0x2E] + lsls r1, 16 + asrs r1, 16 + movs r2, 0x32 + ldrsh r0, [r3, r2] + subs r0, 0xA + cmp r1, r0 + ble _080CB750 + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + movs r2, 0x3E + adds r2, r3 + mov r12, r2 + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + mov r1, r12 + strb r0, [r1] +_080CB750: + movs r2, 0x2E + ldrsh r1, [r3, r2] + movs r2, 0x32 + ldrsh r0, [r3, r2] + cmp r1, r0 + ble _080CB762 + adds r0, r3, 0 + bl move_anim_8072740 +_080CB762: + pop {r0} + bx r0 + thumb_func_end sub_80CB710 + + thumb_func_start sub_80CB768 +sub_80CB768: @ 80CB768 + push {r4-r6,lr} + adds r6, r0, 0 + movs r1, 0x2E + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080CB7A8 + ldr r5, _080CB7E4 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r5] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + ldr r4, _080CB7E8 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r2, [r4] + adds r0, r2 + strh r0, [r6, 0x20] + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x2] + adds r0, r1 + strh r0, [r6, 0x22] + ldrh r0, [r4, 0x4] + strh r0, [r6, 0x30] + ldrh r0, [r4, 0x6] + strh r0, [r6, 0x32] + ldrh r0, [r4, 0x8] + strh r0, [r6, 0x34] +_080CB7A8: + ldrh r0, [r6, 0x2E] + adds r0, 0x1 + strh r0, [r6, 0x2E] + ldrh r1, [r6, 0x30] + muls r0, r1 + strh r0, [r6, 0x24] + movs r2, 0x2E + ldrsh r1, [r6, r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + movs r1, 0xFF + ands r0, r1 + movs r2, 0x32 + ldrsh r1, [r6, r2] + bl Sin + strh r0, [r6, 0x26] + movs r0, 0x2E + ldrsh r1, [r6, r0] + movs r2, 0x34 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _080CB7DE + adds r0, r6, 0 + bl move_anim_8072740 +_080CB7DE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB7E4: .4byte gBattleAnimPlayerMonIndex +_080CB7E8: .4byte gBattleAnimArgs + thumb_func_end sub_80CB768 + + thumb_func_start sub_80CB7EC +sub_80CB7EC: @ 80CB7EC + push {r4,r5,lr} + movs r2, 0x20 + ldrsh r4, [r0, r2] + lsls r4, 8 + movs r3, 0x22 + ldrsh r2, [r0, r3] + orrs r4, r2 + movs r5, 0x3A + ldrsh r2, [r0, r5] + lsls r2, 8 + movs r5, 0x3C + ldrsh r3, [r0, r5] + orrs r2, r3 + lsls r1, 8 + strh r4, [r0, 0x38] + strh r2, [r0, 0x3A] + strh r1, [r0, 0x3C] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80CB7EC + + thumb_func_start sub_80CB814 +sub_80CB814: @ 80CB814 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r0 + ldrh r0, [r0, 0x38] + lsrs r1, r0, 8 + mov r10, r1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r1, r8 + ldrh r0, [r1, 0x3A] + lsrs r2, r0, 8 + lsls r0, 24 + lsrs r4, r0, 24 + ldrh r1, [r1, 0x3C] + lsls r0, r1, 16 + asrs r0, 24 + lsls r0, 16 + lsrs r6, r0, 16 + movs r3, 0xFF + ands r3, r1 + cmp r2, 0 + bne _080CB84E + movs r2, 0x20 + negs r2, r2 + b _080CB856 +_080CB84E: + cmp r2, 0xFF + bne _080CB856 + movs r2, 0x88 + lsls r2, 1 +_080CB856: + mov r0, r9 + subs r4, r0 + lsls r4, 16 + lsrs r4, 16 + mov r1, r10 + subs r0, r2, r1 + lsls r5, r3, 16 + asrs r5, 16 + muls r0, r5 + lsls r1, r6, 16 + asrs r7, r1, 16 + adds r1, r7, 0 + bl __divsi3 + adds r6, r0, 0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + muls r0, r5 + adds r1, r7, 0 + bl __divsi3 + add r6, r10 + mov r1, r8 + strh r6, [r1, 0x20] + add r0, r9 + strh r0, [r1, 0x22] + adds r5, 0x1 + lsls r5, 16 + lsrs r3, r5, 16 + asrs r5, 16 + cmp r5, r7 + beq _080CB8A8 + lsls r1, r7, 8 + lsls r0, r3, 16 + asrs r0, 16 + orrs r0, r1 + mov r1, r8 + strh r0, [r1, 0x3C] + movs r0, 0 + b _080CB8AA +_080CB8A8: + movs r0, 0x1 +_080CB8AA: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80CB814 + + thumb_func_start sub_80CB8B8 +sub_80CB8B8: @ 80CB8B8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0xA + bne _080CB8CC + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim +_080CB8CC: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x32 + ble _080CB8E0 + adds r0, r4, 0 + bl move_anim_8072740 +_080CB8E0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CB8B8 + + thumb_func_start sub_80CB8E8 +sub_80CB8E8: @ 80CB8E8 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080CB912 + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080CB912: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_80CB814 + lsls r0, 24 + cmp r0, 0 + beq _080CB942 + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + ldr r0, _080CB948 @ =sub_80CB8B8 + str r0, [r4, 0x1C] +_080CB942: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB948: .4byte sub_80CB8B8 + thumb_func_end sub_80CB8E8 + + thumb_func_start sub_80CB94C +sub_80CB94C: @ 80CB94C + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_80787B0 + ldr r4, _080CB994 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080CB998 @ =gBattleAnimPlayerMonIndex + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080CB99C + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80CB7EC + movs r0, 0x1 + b _080CB9AE + .align 2, 0 +_080CB994: .4byte gBattleAnimEnemyMonIndex +_080CB998: .4byte gBattleAnimPlayerMonIndex +_080CB99C: + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80CB7EC + movs r0, 0x3 +_080CB9AE: + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080CB9C0 @ =sub_80CB8E8 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB9C0: .4byte sub_80CB8E8 + thumb_func_end sub_80CB94C + + thumb_func_start sub_80CB9C4 +sub_80CB9C4: @ 80CB9C4 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080CB9EE + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080CB9EE: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + adds r0, r4, 0 + bl sub_80CB814 + lsls r0, 24 + cmp r0, 0 + beq _080CBA20 + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + adds r0, r4, 0 + bl move_anim_8072740 +_080CBA20: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80CB9C4 + + thumb_func_start sub_80CBA28 +sub_80CBA28: @ 80CBA28 + push {r4-r6,lr} + adds r5, r0, 0 + ldr r4, _080CBA64 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _080CBA6C + strh r0, [r5, 0x3A] + adds r0, r6, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x28 + bl sub_80CB7EC + movs r0, 0x3 + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080CBA68 @ =sub_80CB8E8 + b _080CBA96 + .align 2, 0 +_080CBA64: .4byte gBattleAnimEnemyMonIndex +_080CBA68: .4byte sub_80CB8E8 +_080CBA6C: + movs r0, 0xFF + strh r0, [r5, 0x3A] + adds r0, r6, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _080CBA84 + movs r0, 0 + strh r0, [r5, 0x3A] +_080CBA84: + adds r0, r5, 0 + movs r1, 0x28 + bl sub_80CB7EC + movs r0, 0x3 + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080CBAA0 @ =sub_80CB9C4 +_080CBA96: + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CBAA0: .4byte sub_80CB9C4 + thumb_func_end sub_80CBA28 + + thumb_func_start sub_80CBAA4 +sub_80CBAA4: @ 80CBAA4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080CBABE + adds r0, r4, 0 + movs r1, 0 + bl sub_8078764 + ldr r0, _080CBAE4 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r4, 0x30] +_080CBABE: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + ldrh r1, [r4, 0x30] + muls r0, r1 + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080CBADE + adds r0, r4, 0 + bl move_anim_8072740 +_080CBADE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CBAE4: .4byte gBattleAnimArgs + thumb_func_end sub_80CBAA4 + + thumb_func_start sub_80CBAE8 +sub_80CBAE8: @ 80CBAE8 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0 + bl sub_8078764 + ldr r4, _080CBB30 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080CBB34 @ =gBattleAnimEnemyMonIndex + ldrb r1, [r0] + movs r0, 0x2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _080CBB38 + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80CB7EC + movs r0, 0x1 + b _080CBB4A + .align 2, 0 +_080CBB30: .4byte gBattleAnimPlayerMonIndex +_080CBB34: .4byte gBattleAnimEnemyMonIndex +_080CBB38: + strh r6, [r5, 0x3A] + adds r0, r2, 0 + adds r0, 0xA + strh r0, [r5, 0x3C] + adds r0, r5, 0 + movs r1, 0x3C + bl sub_80CB7EC + movs r0, 0x3 +_080CBB4A: + strh r0, [r5, 0x34] + movs r0, 0x3C + strh r0, [r5, 0x36] + ldr r0, _080CBB5C @ =sub_80CBB60 + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CBB5C: .4byte sub_80CBB60 + thumb_func_end sub_80CBAE8 + + thumb_func_start sub_80CBB60 +sub_80CBB60: @ 80CBB60 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + lsls r0, 7 + movs r2, 0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, 0x2E] + adds r1, r0 + movs r5, 0 + strh r1, [r4, 0x2E] + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7F + ble _080CBB8A + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + strh r5, [r4, 0x2E] +_080CBB8A: + ldrh r0, [r4, 0x2E] + adds r0, 0x80 + lsls r0, 16 + asrs r0, 16 + movs r1, 0x30 + ldrsh r2, [r4, r1] + lsls r2, 3 + movs r1, 0x1E + subs r1, r2 + lsls r1, 16 + asrs r1, 16 + bl Sin + strh r0, [r4, 0x26] + lsls r0, 16 + cmp r0, 0 + bne _080CBBBE + movs r0, 0x3F + bl sub_8076F98 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x7D + bl PlaySE12WithPanning +_080CBBBE: + adds r0, r4, 0 + bl sub_80CB814 + lsls r0, 24 + cmp r0, 0 + beq _080CBBE6 + strh r5, [r4, 0x26] + strh r5, [r4, 0x2E] + ldr r0, _080CBBEC @ =sub_80CB8B8 + str r0, [r4, 0x1C] + movs r0, 0x40 + negs r0, r0 + bl sub_8076F98 + adds r1, r0, 0 + lsls r1, 24 + asrs r1, 24 + movs r0, 0x7D + bl PlaySE12WithPanning +_080CBBE6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CBBEC: .4byte sub_80CB8B8 + thumb_func_end sub_80CBB60 + + thumb_func_start sub_80CBBF0 +sub_80CBBF0: @ 80CBBF0 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080CBC84 + bl IsContest + lsls r0, 24 + cmp r0, 0 + bne _080CBC18 + ldr r0, _080CBC14 @ =gBattleAnimArgs + ldrh r1, [r0, 0x2] + strh r1, [r4, 0x30] + movs r1, 0x78 + strh r1, [r4, 0x20] + adds r5, r0, 0 + b _080CBC3A + .align 2, 0 +_080CBC14: .4byte gBattleAnimArgs +_080CBC18: + ldr r0, _080CBC74 @ =gBattleAnimArgs + movs r1, 0x2 + ldrsh r3, [r0, r1] + adds r1, r3, 0 + subs r1, 0x20 + adds r2, r1, 0 + adds r5, r0, 0 + cmp r1, 0 + bge _080CBC2E + adds r2, r3, 0 + adds r2, 0xDF +_080CBC2E: + asrs r0, r2, 8 + lsls r0, 8 + subs r0, r1, r0 + strh r0, [r4, 0x30] + movs r0, 0x46 + strh r0, [r4, 0x20] +_080CBC3A: + ldrh r0, [r5] + strh r0, [r4, 0x22] + strh r0, [r4, 0x32] + movs r0, 0x14 + strh r0, [r4, 0x36] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x3C + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] + ldr r0, _080CBC78 @ =sub_80CBC8C + str r0, [r4, 0x1C] + ldrh r0, [r4, 0x30] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBE + bhi _080CBC7C + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F + b _080CBC82 + .align 2, 0 +_080CBC74: .4byte gBattleAnimArgs +_080CBC78: .4byte sub_80CBC8C +_080CBC7C: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D +_080CBC82: + strb r0, [r1] +_080CBC84: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80CBBF0 + + thumb_func_start sub_80CBC8C +sub_80CBC8C: @ 80CBC8C + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080CBC9E + cmp r0, 0x1 + beq _080CBCCE + b _080CBCEE +_080CBC9E: + ldrh r5, [r4, 0x32] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x4E + ble _080CBCB6 + movs r0, 0x1 + strh r0, [r4, 0x34] + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + b _080CBCEE +_080CBCB6: + movs r1, 0x36 + ldrsh r0, [r4, r1] + movs r1, 0xA + bl __divsi3 + adds r0, r5, r0 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x36] + adds r1, 0x3 + strh r1, [r4, 0x36] + strh r0, [r4, 0x22] + b _080CBCEE +_080CBCCE: + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080CBCEE + adds r0, r4, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _080CBCEE + movs r0, 0 + strh r0, [r4, 0x2E] + strh r0, [r4, 0x32] + ldr r0, _080CBCF4 @ =sub_80CBCF8 + str r0, [r4, 0x1C] +_080CBCEE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CBCF4: .4byte sub_80CBCF8 + thumb_func_end sub_80CBC8C + + thumb_func_start sub_80CBCF8 +sub_80CBCF8: @ 80CBCF8 + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _080CBD3C @ =gUnknown_083D680C + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r3, r0, r1 + adds r0, r5, 0x1 + adds r0, r3, r0 + ldrh r2, [r4, 0x32] + movs r6, 0x32 + ldrsh r1, [r4, r6] + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r1, r0 + bne _080CBD44 + adds r0, r5, 0x2 + adds r0, r3, r0 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0x7F + bne _080CBD30 + movs r0, 0 + strh r0, [r4, 0x2E] + ldr r0, _080CBD40 @ =sub_80CBDB0 + str r0, [r4, 0x1C] +_080CBD30: + movs r0, 0 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _080CBDAA + .align 2, 0 +_080CBD3C: .4byte gUnknown_083D680C +_080CBD40: .4byte sub_80CBDB0 +_080CBD44: + adds r0, r2, 0x1 + strh r0, [r4, 0x32] + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + adds r1, r0, r5 + movs r2, 0 + ldrsb r2, [r1, r2] + adds r1, r5, 0x2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + muls r0, r2 + ldrh r1, [r4, 0x30] + adds r0, r1 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x30] + bl IsContest + lsls r0, 24 + cmp r0, 0 + bne _080CBD92 + ldrh r0, [r4, 0x30] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xBE + bhi _080CBD8A + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1F + b _080CBD90 +_080CBD8A: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0x1D +_080CBD90: + strb r0, [r1] +_080CBD92: + movs r6, 0x30 + ldrsh r0, [r4, r6] + movs r1, 0x3C + bl Cos + strh r0, [r4, 0x24] + movs r1, 0x30 + ldrsh r0, [r4, r1] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] +_080CBDAA: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80CBCF8 + + thumb_func_start sub_80CBDB0 +sub_80CBDB0: @ 80CBDB0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x14 + ble _080CBDC2 + adds r0, r4, 0 + bl move_anim_8072740 +_080CBDC2: + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + lsls r0, 1 + subs r1, r0 + adds r3, r4, 0 + adds r3, 0x3E + movs r0, 0x1 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CBDB0 + + thumb_func_start sub_80CBDF4 +sub_80CBDF4: @ 80CBDF4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080CBF48 @ =gTasks + adds r5, r0, r1 + ldr r4, _080CBF4C @ =gBattleAnimEnemyMonIndex + ldrb r0, [r4] + bl sub_8079E90 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + strh r0, [r5, 0x10] + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x14] + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x16] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_807A100 + strh r0, [r5, 0x1C] + ldrb r0, [r4] + movs r1, 0 + bl sub_807A100 + strh r0, [r5, 0x1E] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + movs r2, 0x1 + negs r2, r2 + adds r1, r2, 0 + cmp r0, 0x1 + bne _080CBE5C + movs r1, 0x1 +_080CBE5C: + strh r1, [r5, 0x12] + movs r3, 0x12 + ldrsh r0, [r5, r3] + lsls r0, 6 + movs r1, 0x38 + subs r1, r0 + strh r1, [r5, 0x1A] + ldrh r0, [r5, 0x16] + subs r0, r1 + ldrh r1, [r5, 0x14] + adds r0, r1 + strh r0, [r5, 0x18] + ldr r0, _080CBF50 @ =gSpriteTemplate_83D6884 + movs r2, 0x18 + ldrsh r1, [r5, r2] + movs r3, 0x1A + ldrsh r2, [r5, r3] + ldrb r3, [r5, 0x10] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0xC] + cmp r0, 0x40 + bne _080CBE94 + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080CBE94: + ldr r4, _080CBF54 @ =gSprites + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + movs r1, 0xA + strh r1, [r0, 0x2E] + movs r2, 0xC + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x18] + strh r1, [r0, 0x30] + movs r3, 0xC + ldrsh r0, [r5, r3] + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r4 + movs r1, 0x1C + ldrsh r0, [r5, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r5, r3] + muls r1, r0 + ldrh r0, [r5, 0x14] + subs r0, r1 + strh r0, [r2, 0x32] + movs r0, 0xC + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrh r1, [r5, 0x1A] + strh r1, [r0, 0x34] + movs r1, 0xC + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + movs r2, 0x1E + ldrsh r0, [r5, r2] + lsrs r2, r0, 31 + adds r0, r2 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r2, [r5, r3] + muls r0, r2 + ldrh r2, [r5, 0x16] + adds r0, r2 + strh r0, [r1, 0x36] + movs r3, 0xC + ldrsh r1, [r5, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80CC338 + movs r1, 0xC + ldrsh r2, [r5, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + strh r0, [r1, 0x38] + movs r2, 0xC + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl sub_80786EC + ldr r0, _080CBF58 @ =sub_80CBF5C + str r0, [r5] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CBF48: .4byte gTasks +_080CBF4C: .4byte gBattleAnimEnemyMonIndex +_080CBF50: .4byte gSpriteTemplate_83D6884 +_080CBF54: .4byte gSprites +_080CBF58: .4byte sub_80CBF5C + thumb_func_end sub_80CBDF4 + + thumb_func_start sub_80CBF5C +sub_80CBF5C: @ 80CBF5C + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _080CBFA0 @ =gTasks + adds r6, r0, r1 + movs r0, 0xC + ldrsh r1, [r6, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080CBFA4 @ =gSprites + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r5, [r6, r1] + cmp r5, 0x7 + bne _080CBF84 + b _080CC1B4 +_080CBF84: + cmp r5, 0x7 + bgt _080CBFD2 + cmp r5, 0x3 + bne _080CBF8E + b _080CC0A6 +_080CBF8E: + cmp r5, 0x3 + bgt _080CBFA8 + cmp r5, 0x1 + beq _080CC038 + cmp r5, 0x1 + bgt _080CC088 + cmp r5, 0 + beq _080CC01A + b _080CC330 + .align 2, 0 +_080CBFA0: .4byte gTasks +_080CBFA4: .4byte gSprites +_080CBFA8: + cmp r5, 0x5 + bne _080CBFAE + b _080CC11C +_080CBFAE: + cmp r5, 0x5 + ble _080CBFB4 + b _080CC196 +_080CBFB4: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80CC358 + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + bne _080CBFCA + b _080CC330 +_080CBFCA: + movs r0, 0x5 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080CC32E +_080CBFD2: + cmp r5, 0xB + bne _080CBFD8 + b _080CC298 +_080CBFD8: + cmp r5, 0xB + bgt _080CC006 + cmp r5, 0x9 + bne _080CBFE2 + b _080CC206 +_080CBFE2: + cmp r5, 0x9 + ble _080CBFE8 + b _080CC27C +_080CBFE8: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80CC358 + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + bne _080CBFFE + b _080CC330 +_080CBFFE: + movs r0, 0x9 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080CC32E +_080CC006: + cmp r5, 0xD + bne _080CC00C + b _080CC30A +_080CC00C: + cmp r5, 0xD + bge _080CC012 + b _080CC2EA +_080CC012: + cmp r5, 0xFF + bne _080CC018 + b _080CC31A +_080CC018: + b _080CC330 +_080CC01A: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80CC358 + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + bne _080CC030 + b _080CC330 +_080CC030: + movs r0, 0x1 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080CC32E +_080CC038: + ldrh r2, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r2, r3 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x14] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x16] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80CC338 + strh r0, [r4, 0x38] + ldrh r0, [r6, 0x10] + adds r0, 0x2 + strh r0, [r6, 0x10] + strh r5, [r6, 0xE] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80786EC + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080CC32E +_080CC088: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80CC358 + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + bne _080CC09E + b _080CC330 +_080CC09E: + movs r0, 0x3 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080CC32E +_080CC0A6: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r1, r0 + ldrh r0, [r6, 0x14] + subs r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r1, 0x1E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r2, 0x12 + ldrsh r1, [r6, r2] + muls r1, r0 + ldrh r0, [r6, 0x16] + subs r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80CC338 + strh r0, [r4, 0x38] + movs r0, 0x2 + strh r0, [r6, 0xE] + ldrh r0, [r6, 0x10] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80786EC + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080CC32E +_080CC11C: + ldrh r1, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r1, r3 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r0, r1 + ldrh r1, [r6, 0x14] + adds r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r2, 0x1E + ldrsh r0, [r6, r2] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r0, r1 + ldrh r1, [r6, 0x16] + adds r0, r1 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80CC338 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + subs r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x3 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80786EC + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080CC32E +_080CC196: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80CC358 + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + bne _080CC1AC + b _080CC330 +_080CC1AC: + movs r0, 0x7 + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080CC32E +_080CC1B4: + ldrh r2, [r4, 0x24] + ldrh r3, [r4, 0x20] + adds r2, r3 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x14] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x16] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80CC338 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + adds r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x4 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80786EC + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080CC32E +_080CC206: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + movs r0, 0 + strh r1, [r4, 0x20] + ldrh r2, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r2, r3 + strh r2, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r1, [r4, 0x30] + movs r1, 0x1C + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r3, 0x12 + ldrsh r1, [r6, r3] + muls r1, r0 + ldrh r0, [r6, 0x14] + subs r0, r1 + strh r0, [r4, 0x32] + strh r2, [r4, 0x34] + movs r1, 0x1E + ldrsh r0, [r6, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + adds r0, 0xA + movs r2, 0x12 + ldrsh r1, [r6, r2] + muls r0, r1 + ldrh r3, [r6, 0x16] + adds r0, r3 + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80CC338 + strh r0, [r4, 0x38] + movs r0, 0x5 + strh r0, [r6, 0xE] + ldrh r0, [r6, 0x10] + adds r1, r4, 0 + adds r1, 0x43 + strb r0, [r1] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80786EC + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080CC32E +_080CC27C: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80CC358 + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080CC330 + movs r0, 0xB + strh r0, [r6, 0x26] + movs r0, 0xFF + b _080CC32E +_080CC298: + ldrh r2, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r2, r0 + movs r0, 0 + strh r2, [r4, 0x20] + ldrh r1, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r1, r3 + strh r1, [r4, 0x22] + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + movs r0, 0xA + strh r0, [r4, 0x2E] + strh r2, [r4, 0x30] + ldrh r0, [r6, 0x18] + strh r0, [r4, 0x32] + strh r1, [r4, 0x34] + ldrh r0, [r6, 0x1A] + strh r0, [r4, 0x36] + adds r0, r4, 0 + bl sub_80CC338 + strh r0, [r4, 0x38] + ldrh r1, [r6, 0x10] + subs r1, 0x2 + strh r1, [r6, 0x10] + movs r0, 0x6 + strh r0, [r6, 0xE] + adds r0, r4, 0 + adds r0, 0x43 + strb r1, [r0] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + bl sub_80786EC + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080CC32E +_080CC2EA: + adds r0, r6, 0 + adds r1, r2, 0 + bl sub_80CC358 + adds r0, r4, 0 + bl sub_8078718 + lsls r0, 24 + cmp r0, 0 + beq _080CC330 + adds r0, r4, 0 + bl DestroySprite + ldrh r0, [r6, 0x8] + adds r0, 0x1 + b _080CC32E +_080CC30A: + movs r1, 0x20 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _080CC330 + adds r0, r2, 0 + bl DestroyAnimVisualTask + b _080CC330 +_080CC31A: + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x5 + ble _080CC330 + movs r0, 0 + strh r0, [r6, 0xA] + ldrh r0, [r6, 0x26] +_080CC32E: + strh r0, [r6, 0x8] +_080CC330: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80CBF5C + + thumb_func_start sub_80CC338 +sub_80CC338: @ 80CC338 + push {lr} + movs r2, 0x8 + movs r3, 0x36 + ldrsh r1, [r0, r3] + movs r3, 0x22 + ldrsh r0, [r0, r3] + cmp r1, r0 + bge _080CC34E + negs r0, r2 + lsls r0, 16 + lsrs r2, r0, 16 +_080CC34E: + lsls r0, r2, 16 + asrs r0, 16 + pop {r1} + bx r1 + thumb_func_end sub_80CC338 + + thumb_func_start sub_80CC358 +sub_80CC358: @ 80CC358 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + ldrh r0, [r6, 0x24] + adds r0, 0x1 + strh r0, [r6, 0x24] + lsls r0, 16 + cmp r0, 0 + ble _080CC3EE + movs r0, 0 + strh r0, [r6, 0x24] + ldr r0, _080CC3F8 @ =gSprites + mov r8, r0 + movs r2, 0xC + ldrsh r1, [r6, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrh r1, [r0, 0x24] + ldrh r2, [r0, 0x20] + adds r1, r2 + ldrh r2, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r2, r0 + ldr r0, _080CC3FC @ =gSpriteTemplate_83D6884 + lsls r1, 16 + asrs r1, 16 + lsls r2, 16 + asrs r2, 16 + ldrb r3, [r6, 0x10] + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080CC3EE + lsls r5, r0, 4 + adds r5, r0 + lsls r5, 2 + mov r0, r8 + adds r4, r5, r0 + strh r7, [r4, 0x3A] + movs r0, 0xC + strh r0, [r4, 0x3C] + ldr r0, _080CC400 @ =gTasks + lsls r1, r7, 2 + adds r1, r7 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0x20] + adds r0, 0x1 + strh r0, [r1, 0x20] + ldrh r2, [r6, 0x22] + movs r0, 0x1 + ands r0, r2 + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x22] + adds r0, 0x1 + strh r0, [r1, 0x22] + ldrb r1, [r6, 0xE] + adds r0, r4, 0 + bl StartSpriteAnim + ldrh r0, [r6, 0x10] + adds r4, 0x43 + strb r0, [r4] + mov r0, r8 + adds r0, 0x1C + adds r5, r0 + ldr r0, _080CC404 @ =sub_80CC408 + str r0, [r5] +_080CC3EE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC3F8: .4byte gSprites +_080CC3FC: .4byte gSpriteTemplate_83D6884 +_080CC400: .4byte gTasks +_080CC404: .4byte sub_80CC408 + thumb_func_end sub_80CC358 + + thumb_func_start sub_80CC408 +sub_80CC408: @ 80CC408 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _080CC46A + movs r0, 0 + strh r0, [r4, 0x2E] + adds r3, r4, 0 + adds r3, 0x3E + ldrb r2, [r3] + lsls r0, r2, 29 + lsrs r0, 31 + movs r1, 0x1 + eors r1, r0 + lsls r1, 2 + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, 0x30] + adds r0, 0x1 + strh r0, [r4, 0x30] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + ble _080CC46A + ldr r3, _080CC470 @ =gTasks + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r1, 1 + movs r0, 0x3A + ldrsh r2, [r4, r0] + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r3, 0x8 + adds r1, r3 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] + adds r0, r4, 0 + bl DestroySprite +_080CC46A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CC470: .4byte gTasks + thumb_func_end sub_80CC408 + + thumb_func_start sub_80CC474 +sub_80CC474: @ 80CC474 + push {r4-r7,lr} + adds r4, r0, 0 + ldr r0, _080CC488 @ =gBattleAnimArgs + movs r1, 0xC + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _080CC490 + ldr r0, _080CC48C @ =gBattleAnimPlayerMonIndex + b _080CC492 + .align 2, 0 +_080CC488: .4byte gBattleAnimArgs +_080CC48C: .4byte gBattleAnimPlayerMonIndex +_080CC490: + ldr r0, _080CC4B0 @ =gBattleAnimEnemyMonIndex +_080CC492: + ldrb r6, [r0] + adds r0, r6, 0 + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CC4BC + movs r0, 0 + strh r0, [r4, 0x36] + ldr r1, _080CC4B4 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x32] + ldr r0, _080CC4B8 @ =0x0000fff0 + b _080CC4CC + .align 2, 0 +_080CC4B0: .4byte gBattleAnimEnemyMonIndex +_080CC4B4: .4byte gBattleAnimArgs +_080CC4B8: .4byte 0x0000fff0 +_080CC4BC: + movs r0, 0x1 + strh r0, [r4, 0x36] + ldr r1, _080CC4F0 @ =gBattleAnimArgs + ldrh r0, [r1, 0x6] + negs r0, r0 + strh r0, [r4, 0x32] + movs r0, 0x80 + lsls r0, 1 +_080CC4CC: + strh r0, [r4, 0x20] + adds r7, r1, 0 + adds r5, r7, 0 + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x8] + strh r0, [r4, 0x34] + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _080CC502 + cmp r0, 0x1 + bgt _080CC4F4 + cmp r0, 0 + beq _080CC4FE + b _080CC56C + .align 2, 0 +_080CC4F0: .4byte gBattleAnimArgs +_080CC4F4: + cmp r0, 0x2 + beq _080CC508 + cmp r0, 0x3 + beq _080CC534 + b _080CC56C +_080CC4FE: + ldrh r0, [r5] + b _080CC518 +_080CC502: + ldrh r0, [r5] + strh r0, [r4, 0x22] + b _080CC54E +_080CC508: + adds r0, r6, 0 + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r5, [r5] + adds r0, r5 +_080CC518: + strh r0, [r4, 0x22] + adds r0, r6, 0 + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r4, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + b _080CC56C +_080CC534: + ldr r0, _080CC578 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + ldrh r7, [r7] + adds r0, r7 + strh r0, [r4, 0x22] + movs r0, 0x1 + bl obj_id_for_side_relative_to_move +_080CC54E: + adds r0, r6, 0 + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r4, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x5] +_080CC56C: + ldr r0, _080CC57C @ =sub_80CC580 + str r0, [r4, 0x1C] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC578: .4byte gBattleAnimEnemyMonIndex +_080CC57C: .4byte sub_80CC580 + thumb_func_end sub_80CC474 + + thumb_func_start sub_80CC580 +sub_80CC580: @ 80CC580 + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x3C + ldrsh r3, [r4, r0] + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + movs r1, 0x30 + ldrsh r2, [r4, r1] + ldr r1, _080CC5D4 @ =gSineTable + movs r5, 0x2E + ldrsh r0, [r4, r5] + lsls r0, 1 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + muls r0, r2 + asrs r0, 8 + strh r0, [r4, 0x26] + movs r2, 0x32 + ldrsh r0, [r4, r2] + muls r0, r3 + strh r0, [r4, 0x24] + movs r5, 0x34 + ldrsh r0, [r4, r5] + muls r0, r3 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _080CC5D8 + movs r2, 0x24 + ldrsh r0, [r4, r2] + movs r5, 0x20 + ldrsh r1, [r4, r5] + adds r0, r1 + cmp r0, 0xF7 + ble _080CC5F0 + b _080CC5EA + .align 2, 0 +_080CC5D4: .4byte gSineTable +_080CC5D8: + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r2, 0x20 + ldrsh r1, [r4, r2] + adds r0, r1 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bgt _080CC5F0 +_080CC5EA: + adds r0, r4, 0 + bl move_anim_8074EE0 +_080CC5F0: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80CC580 + + thumb_func_start sub_80CC5F8 +sub_80CC5F8: @ 80CC5F8 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _080CC618 @ =gTasks + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _080CC61C + cmp r0, 0x1 + beq _080CC650 + b _080CC6AA + .align 2, 0 +_080CC618: .4byte gTasks +_080CC61C: + ldr r0, _080CC648 @ =0x0000274f + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r2, 0x80 + lsls r2, 1 + adds r4, r2, 0 + adds r0, r4 + strh r0, [r5, 0x18] + ldr r0, _080CC64C @ =0x000027b0 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + adds r0, r4 + strh r0, [r5, 0x20] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _080CC6AA + .align 2, 0 +_080CC648: .4byte 0x0000274f +_080CC64C: .4byte 0x000027b0 +_080CC650: + ldrh r0, [r5, 0x1A] + adds r0, 0x1 + movs r7, 0 + strh r0, [r5, 0x1A] + lsls r0, 16 + cmp r0, 0 + blt _080CC6AA + strh r7, [r5, 0x1A] + ldrh r0, [r5, 0x18] + ldrb r2, [r5, 0x1C] + ldr r4, _080CC6C4 @ =gUnknown_083D6984 + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x10 + bl BlendPalette + ldrh r0, [r5, 0x20] + ldrb r2, [r5, 0x1C] + movs r3, 0x1E + ldrsh r1, [r5, r3] + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x10 + bl BlendPalette + ldrh r0, [r5, 0x1C] + adds r0, 0x1 + strh r0, [r5, 0x1C] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x11 + bne _080CC6AA + strh r7, [r5, 0x1C] + ldrh r0, [r5, 0x1E] + adds r0, 0x1 + strh r0, [r5, 0x1E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + bne _080CC6AA + strh r7, [r5, 0x1E] +_080CC6AA: + ldr r0, _080CC6C8 @ =gBattleAnimArgs + movs r2, 0xE + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _080CC6BE + adds r0, r6, 0 + bl DestroyAnimVisualTask +_080CC6BE: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC6C4: .4byte gUnknown_083D6984 +_080CC6C8: .4byte gBattleAnimArgs + thumb_func_end sub_80CC5F8 + + thumb_func_start sub_80CC6CC +sub_80CC6CC: @ 80CC6CC + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r1, _080CC6E4 @ =gBattleAnimArgs + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + bne _080CC6E8 + adds r0, r6, 0 + bl move_anim_8072740 + b _080CC7C2 + .align 2, 0 +_080CC6E4: .4byte gBattleAnimArgs +_080CC6E8: + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + bne _080CC6F8 + ldr r4, _080CC6F4 @ =gBattleAnimPlayerMonIndex + b _080CC6FA + .align 2, 0 +_080CC6F4: .4byte gBattleAnimPlayerMonIndex +_080CC6F8: + ldr r4, _080CC734 @ =gBattleAnimEnemyMonIndex +_080CC6FA: + ldrb r0, [r4] + movs r1, 0x2 + bl sub_8077ABC + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4] + movs r1, 0x3 + bl sub_8077ABC + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _080CC738 @ =gBattleAnimArgs + ldrh r1, [r0, 0x8] + strh r1, [r6, 0x2E] + movs r3, 0x2 + ldrsh r1, [r0, r3] + adds r7, r0, 0 + cmp r1, 0 + bne _080CC73C + ldrh r0, [r7, 0x4] + adds r0, r5 + strh r0, [r6, 0x20] + ldrh r0, [r7, 0x6] + adds r0, r2 + strh r0, [r6, 0x22] + strh r5, [r6, 0x38] + strh r2, [r6, 0x3A] + b _080CC74C + .align 2, 0 +_080CC734: .4byte gBattleAnimEnemyMonIndex +_080CC738: .4byte gBattleAnimArgs +_080CC73C: + strh r5, [r6, 0x20] + strh r2, [r6, 0x22] + ldrh r0, [r7, 0x4] + adds r0, r5 + strh r0, [r6, 0x38] + ldrh r0, [r7, 0x6] + adds r0, r2 + strh r0, [r6, 0x3A] +_080CC74C: + ldrh r4, [r6, 0x20] + lsls r0, r4, 4 + strh r0, [r6, 0x30] + ldrh r5, [r6, 0x22] + lsls r0, r5, 4 + strh r0, [r6, 0x32] + movs r1, 0x38 + ldrsh r0, [r6, r1] + movs r2, 0x20 + ldrsh r1, [r6, r2] + subs r0, r1 + lsls r0, 4 + movs r3, 0x8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, 0x34] + movs r1, 0x3A + ldrsh r0, [r6, r1] + movs r2, 0x22 + ldrsh r1, [r6, r2] + subs r0, r1 + lsls r0, 4 + movs r3, 0x8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, 0x36] + ldrh r0, [r6, 0x38] + subs r0, r4 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r6, 0x3A] + subs r1, r5 + lsls r1, 16 + asrs r1, 16 + bl sub_80790F0 + lsls r0, 16 + lsrs r4, r0, 16 + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _080CC7AE + ldr r1, _080CC7CC @ =0xffff8000 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_080CC7AE: + movs r3, 0x80 + lsls r3, 1 + str r4, [sp] + adds r0, r6, 0 + movs r1, 0 + adds r2, r3, 0 + bl sub_8078FDC + ldr r0, _080CC7D0 @ =sub_80CC7D4 + str r0, [r6, 0x1C] +_080CC7C2: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC7CC: .4byte 0xffff8000 +_080CC7D0: .4byte sub_80CC7D4 + thumb_func_end sub_80CC6CC + + thumb_func_start sub_80CC7D4 +sub_80CC7D4: @ 80CC7D4 + push {r4,lr} + adds r2, r0, 0 + ldrh r3, [r2, 0x2E] + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0 + beq _080CC804 + ldrh r0, [r2, 0x34] + ldrh r4, [r2, 0x30] + adds r0, r4 + strh r0, [r2, 0x30] + ldrh r1, [r2, 0x36] + ldrh r4, [r2, 0x32] + adds r1, r4 + strh r1, [r2, 0x32] + lsls r0, 16 + asrs r0, 20 + strh r0, [r2, 0x20] + lsls r1, 16 + asrs r1, 20 + strh r1, [r2, 0x22] + subs r0, r3, 0x1 + strh r0, [r2, 0x2E] + b _080CC80A +_080CC804: + adds r0, r2, 0 + bl move_anim_8074EE0 +_080CC80A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CC7D4 + + thumb_func_start sub_80CC810 +sub_80CC810: @ 80CC810 + push {lr} + adds r2, r0, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080CC826 + adds r0, r2, 0 + bl move_anim_8072740 +_080CC826: + pop {r0} + bx r0 + thumb_func_end sub_80CC810 + + thumb_func_start sub_80CC82C +sub_80CC82C: @ 80CC82C + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080CC84C @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CC854 + ldr r2, _080CC850 @ =gBattleAnimArgs + ldrh r0, [r4, 0x20] + ldrh r1, [r2] + subs r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r2, 0x2] + b _080CC860 + .align 2, 0 +_080CC84C: .4byte gBattleAnimPlayerMonIndex +_080CC850: .4byte gBattleAnimArgs +_080CC854: + ldr r0, _080CC878 @ =gBattleAnimArgs + ldrh r1, [r0] + ldrh r2, [r4, 0x20] + adds r1, r2 + strh r1, [r4, 0x20] + ldrh r0, [r0, 0x2] +_080CC860: + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, _080CC87C @ =sub_8078600 + str r0, [r4, 0x1C] + ldr r1, _080CC880 @ =move_anim_8072740 + adds r0, r4, 0 + bl oamt_set_x3A_32 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CC878: .4byte gBattleAnimArgs +_080CC87C: .4byte sub_8078600 +_080CC880: .4byte move_anim_8072740 + thumb_func_end sub_80CC82C + + thumb_func_start sub_80CC884 +sub_80CC884: @ 80CC884 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r0, _080CC8BC @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080CC89E + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim +_080CC89E: + ldr r0, _080CC8C0 @ =sub_80CC810 + str r0, [r5, 0x1C] + ldr r4, _080CC8C4 @ =gBattleAnimArgs + movs r0, 0 + ldrsh r1, [r4, r0] + adds r0, r5, 0 + bl sub_807867C + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CC8BC: .4byte gBattleAnimPlayerMonIndex +_080CC8C0: .4byte sub_80CC810 +_080CC8C4: .4byte gBattleAnimArgs + thumb_func_end sub_80CC884 + + thumb_func_start sub_80CC8C8 +sub_80CC8C8: @ 80CC8C8 + push {r4,lr} + adds r4, r0, 0 + ldr r1, _080CC908 @ =gBattleAnimArgs + ldrh r0, [r1] + ldrh r2, [r4, 0x20] + adds r0, r2 + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x2] + ldrh r2, [r4, 0x22] + adds r0, r2 + strh r0, [r4, 0x22] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0x2E] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0x30] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x34] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x38] + ldrb r1, [r1, 0xC] + adds r0, r4, 0 + bl StartSpriteAffineAnim + ldr r1, _080CC90C @ =move_anim_8074EE0 + adds r0, r4, 0 + bl oamt_set_x3A_32 + ldr r0, _080CC910 @ =sub_8078504 + str r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CC908: .4byte gBattleAnimArgs +_080CC90C: .4byte move_anim_8074EE0 +_080CC910: .4byte sub_8078504 + thumb_func_end sub_80CC8C8 + + thumb_func_start sub_80CC914 +sub_80CC914: @ 80CC914 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080CC964 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x20] + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + strh r0, [r5, 0x22] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080CC948 + ldrh r0, [r5, 0x22] + adds r0, 0x8 + strh r0, [r5, 0x22] +_080CC948: + ldr r0, _080CC968 @ =sub_80CCB00 + str r0, [r5, 0x1C] + ldr r0, _080CC96C @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080CC970 + ldrh r0, [r3] + ldrh r1, [r5, 0x20] + adds r0, r1 + strh r0, [r5, 0x20] + b _080CC984 + .align 2, 0 +_080CC964: .4byte gBattleAnimEnemyMonIndex +_080CC968: .4byte sub_80CCB00 +_080CC96C: .4byte gBattleAnimArgs +_080CC970: + ldrh r0, [r5, 0x20] + ldrh r1, [r3] + subs r0, r1 + strh r0, [r5, 0x20] + adds r2, r5, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080CC984: + ldrh r0, [r3, 0x2] + ldrh r2, [r5, 0x22] + adds r0, r2 + strh r0, [r5, 0x22] + ldr r1, _080CC9B8 @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r5, 0x30] + adds r1, r0, r2 + strh r1, [r5, 0x30] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + ldrh r2, [r5, 0x32] + adds r0, r2 + strh r0, [r5, 0x32] + ldrh r0, [r3, 0x4] + strh r0, [r5, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080CC9B2 + negs r0, r1 + strh r0, [r5, 0x30] +_080CC9B2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CC9B8: .4byte 0xfffffc00 + thumb_func_end sub_80CC914 + + thumb_func_start sub_80CC9BC +sub_80CC9BC: @ 80CC9BC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + ldr r0, _080CC9D8 @ =gBattleAnimArgs + movs r1, 0x6 + ldrsh r0, [r0, r1] + cmp r0, 0x1 + beq _080CC9DC + cmp r0, 0x1 + ble _080CCA58 + cmp r0, 0x2 + beq _080CC9FC + b _080CCA58 + .align 2, 0 +_080CC9D8: .4byte gBattleAnimArgs +_080CC9DC: + ldr r5, _080CC9F8 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r5] + movs r4, 0x2 + eors r0, r4 + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r5] + eors r4, r0 + adds r0, r4, 0 + b _080CCA68 + .align 2, 0 +_080CC9F8: .4byte gBattleAnimEnemyMonIndex +_080CC9FC: + ldr r5, _080CCA54 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r5] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r5] + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r5] + movs r2, 0x2 + mov r8, r2 + mov r1, r8 + eors r0, r1 + bl b_side_obj__get_some_boolean + lsls r0, 24 + cmp r0, 0 + beq _080CCA72 + ldrb r0, [r5] + mov r2, r8 + eors r0, r2 + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, r7 + lsrs r7, r0, 1 + ldrb r0, [r5] + mov r1, r8 + eors r0, r1 + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + lsrs r4, r0, 1 + b _080CCA72 + .align 2, 0 +_080CCA54: .4byte gBattleAnimEnemyMonIndex +_080CCA58: + ldr r4, _080CCAA4 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r4] + movs r1, 0 + bl sub_8077ABC + lsls r0, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] +_080CCA68: + movs r1, 0x1 + bl sub_8077ABC + lsls r0, 24 + lsrs r4, r0, 24 +_080CCA72: + strh r7, [r6, 0x20] + strh r4, [r6, 0x22] + ldr r0, _080CCAA4 @ =gBattleAnimEnemyMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080CCA8A + ldrh r0, [r6, 0x22] + adds r0, 0x8 + strh r0, [r6, 0x22] +_080CCA8A: + ldr r0, _080CCAA8 @ =sub_80CCB00 + str r0, [r6, 0x1C] + ldr r0, _080CCAAC @ =gBattleAnimArgs + movs r2, 0x4 + ldrsh r1, [r0, r2] + adds r3, r0, 0 + cmp r1, 0 + bne _080CCAB0 + ldrh r0, [r3] + ldrh r1, [r6, 0x20] + adds r0, r1 + strh r0, [r6, 0x20] + b _080CCAC4 + .align 2, 0 +_080CCAA4: .4byte gBattleAnimEnemyMonIndex +_080CCAA8: .4byte sub_80CCB00 +_080CCAAC: .4byte gBattleAnimArgs +_080CCAB0: + ldrh r0, [r6, 0x20] + ldrh r1, [r3] + subs r0, r1 + strh r0, [r6, 0x20] + adds r2, r6, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_080CCAC4: + ldrh r0, [r3, 0x2] + ldrh r2, [r6, 0x22] + adds r0, r2 + strh r0, [r6, 0x22] + ldr r1, _080CCAFC @ =0xfffffc00 + adds r0, r1, 0 + ldrh r2, [r6, 0x30] + adds r1, r0, r2 + strh r1, [r6, 0x30] + movs r2, 0x80 + lsls r2, 3 + adds r0, r2, 0 + ldrh r2, [r6, 0x32] + adds r0, r2 + strh r0, [r6, 0x32] + ldrh r0, [r3, 0x4] + strh r0, [r6, 0x38] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + bne _080CCAF2 + negs r0, r1 + strh r0, [r6, 0x30] +_080CCAF2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080CCAFC: .4byte 0xfffffc00 + thumb_func_end sub_80CC9BC + + thumb_func_start sub_80CCB00 +sub_80CCB00: @ 80CCB00 + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4, 0x30] + ldrh r2, [r4, 0x34] + adds r0, r1, r2 + strh r0, [r4, 0x34] + ldrh r0, [r4, 0x32] + ldrh r2, [r4, 0x36] + adds r0, r2 + strh r0, [r4, 0x36] + movs r2, 0x38 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _080CCB22 + adds r0, r1, 0 + adds r0, 0x18 + b _080CCB26 +_080CCB22: + adds r0, r1, 0 + subs r0, 0x18 +_080CCB26: + strh r0, [r4, 0x30] + ldrh r0, [r4, 0x32] + subs r0, 0x18 + strh r0, [r4, 0x32] + ldrh r0, [r4, 0x34] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x24] + ldrh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 24 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x14 + bne _080CCB5C + ldr r1, _080CCB64 @ =move_anim_8072740 + adds r0, r4, 0 + bl oamt_set_x3A_32 + movs r0, 0x3 + strh r0, [r4, 0x2E] + ldr r0, _080CCB68 @ =sub_80782D8 + str r0, [r4, 0x1C] +_080CCB5C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CCB64: .4byte move_anim_8072740 +_080CCB68: .4byte sub_80782D8 + thumb_func_end sub_80CCB00 + + thumb_func_start unref_sub_80CCB6C +unref_sub_80CCB6C: @ 80CCB6C + push {r4,r5,lr} + adds r5, r0, 0 + ldrh r1, [r5, 0x32] + movs r2, 0x32 + ldrsh r0, [r5, r2] + cmp r0, 0x1 + ble _080CCC10 + ldrh r1, [r5, 0x34] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080CCBC8 + adds r3, r5, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x5 + negs r2, r2 + adds r0, r2, 0 + ands r0, r1 + strb r0, [r3] + ldr r4, _080CCBC4 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r3, [r0] + adds r1, r2, 0 + ands r1, r3 + strb r1, [r0] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r0, 0x3E + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _080CCBFE + .align 2, 0 +_080CCBC4: .4byte gSprites +_080CCBC8: + adds r1, r5, 0 + adds r1, 0x3E + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] + ldr r3, _080CCC0C @ =gSprites + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x3E + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] +_080CCBFE: + movs r0, 0 + strh r0, [r5, 0x32] + ldrh r0, [r5, 0x34] + adds r0, 0x1 + strh r0, [r5, 0x34] + b _080CCC14 + .align 2, 0 +_080CCC0C: .4byte gSprites +_080CCC10: + adds r0, r1, 0x1 + strh r0, [r5, 0x32] +_080CCC14: + movs r1, 0x34 + ldrsh r0, [r5, r1] + cmp r0, 0xA + bne _080CCC44 + movs r2, 0x2E + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _080CCC4C @ =gSprites + adds r0, r4 + bl DestroySprite + movs r0, 0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl DestroySprite + adds r0, r5, 0 + bl move_anim_8072740 +_080CCC44: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CCC4C: .4byte gSprites + thumb_func_end unref_sub_80CCB6C + + thumb_func_start sub_80CCC50 +sub_80CCC50: @ 80CCC50 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _080CCC70 @ =gBattleAnimArgs + ldrh r0, [r4, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080CCC74 @ =gBattleAnimPlayerMonIndex + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CCC78 + ldrh r0, [r5, 0x20] + ldrh r1, [r4] + subs r0, r1 + b _080CCC7E + .align 2, 0 +_080CCC70: .4byte gBattleAnimArgs +_080CCC74: .4byte gBattleAnimPlayerMonIndex +_080CCC78: + ldrh r0, [r4] + ldrh r1, [r5, 0x20] + adds r0, r1 +_080CCC7E: + strh r0, [r5, 0x20] + ldr r4, _080CCCAC @ =gBattleAnimArgs + ldrb r1, [r4, 0xA] + adds r0, r5, 0 + bl StartSpriteAnim + ldrh r0, [r4, 0x6] + negs r0, r0 + strh r0, [r5, 0x30] + ldrh r0, [r4, 0x2] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldrh r0, [r4, 0x8] + strh r0, [r5, 0x34] + ldr r1, _080CCCB0 @ =sub_80CCCB4 + str r1, [r5, 0x1C] + adds r0, r5, 0 + bl _call_via_r1 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080CCCAC: .4byte gBattleAnimArgs +_080CCCB0: .4byte sub_80CCCB4 + thumb_func_end sub_80CCC50 + + thumb_func_start sub_80CCCB4 +sub_80CCCB4: @ 80CCCB4 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + movs r1, 0x64 + bl Cos + strh r0, [r4, 0x24] + movs r2, 0x2E + ldrsh r0, [r4, r2] + movs r1, 0x14 + bl Sin + strh r0, [r4, 0x26] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x7F + bgt _080CCCE0 + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0 + b _080CCCE6 +_080CCCE0: + adds r1, r4, 0 + adds r1, 0x43 + movs r0, 0xE +_080CCCE6: + strb r0, [r1] + ldrh r0, [r4, 0x30] + ldrh r2, [r4, 0x2E] + adds r0, r2 + movs r1, 0xFF + ands r0, r1 + strh r0, [r4, 0x2E] + ldrh r0, [r4, 0x38] + adds r0, 0x82 + strh r0, [r4, 0x38] + lsls r0, 16 + asrs r0, 24 + ldrh r1, [r4, 0x26] + adds r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x1 + strh r0, [r4, 0x32] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080CCD1C + adds r0, r4, 0 + bl move_anim_8072740 +_080CCD1C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80CCCB4 + + thumb_func_start sub_80CCD24 +sub_80CCD24: @ 80CCD24 + push {r4-r6,lr} + adds r5, r0, 0 + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _080CCD3A + ldr r1, _080CCD98 @ =gBattleAnimArgs + ldrh r0, [r1, 0x2] + adds r0, 0x8 + strh r0, [r1, 0x2] +_080CCD3A: + ldr r6, _080CCD9C @ =gBattleAnimPlayerMonIndex + ldrb r0, [r6] + movs r1, 0 + bl sub_8077EE4 + lsls r0, 24 + ldr r4, _080CCD98 @ =gBattleAnimArgs + lsrs r0, 24 + ldrh r1, [r4] + adds r0, r1 + strh r0, [r5, 0x20] + ldrb r0, [r6] + movs r1, 0x1 + bl sub_8077EE4 + lsls r0, 24 + lsrs r0, 24 + ldrh r4, [r4, 0x2] + adds r0, r4 + strh r0, [r5, 0x22] + ldrb r0, [r6] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + beq _080CCD78 + bl IsContest + lsls r0, 24 + cmp r0, 0 + beq _080CCDA0 +_080CCD78: + ldrb r0, [r6] + bl sub_8079ED4 + lsls r0, 24 + lsrs r0, 24 + adds r0, 0x1 + movs r1, 0x3 + ands r0, r1 + lsls r0, 2 + ldrb r2, [r5, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, 0x5] + b _080CCDB8 + .align 2, 0 +_080CCD98: .4byte gBattleAnimArgs +_080CCD9C: .4byte gBattleAnimPlayerMonIndex +_080CCDA0: + ldrb r0, [r6] + bl sub_8079ED4 + movs r1, 0x3 + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] +_080CCDB8: + ldr r0, _080CCDF8 @ =gBattleAnimArgs + ldrh r0, [r0, 0x4] + strh r0, [r5, 0x2E] + ldr r0, _080CCDFC @ =0x00002828 + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 20 + movs r3, 0x80 + lsls r3, 1 + adds r0, r3 + strh r0, [r5, 0x32] + movs r2, 0x10 + movs r0, 0x10 + strh r0, [r5, 0x3C] + ldr r1, _080CCE00 @ =REG_BLDCNT + movs r3, 0xFD + lsls r3, 6 + adds r0, r3, 0 + strh r0, [r1] + ldr r3, _080CCE04 @ =REG_BLDALPHA + ldrh r1, [r5, 0x3C] + lsls r0, r1, 8 + subs r2, r1 + orrs r0, r2 + strh r0, [r3] + ldr r0, _080CCE08 @ =sub_80CCE0C + str r0, [r5, 0x1C] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080CCDF8: .4byte gBattleAnimArgs +_080CCDFC: .4byte 0x00002828 +_080CCE00: .4byte REG_BLDCNT +_080CCE04: .4byte REG_BLDALPHA +_080CCE08: .4byte sub_80CCE0C + thumb_func_end sub_80CCD24 + thumb_func_start sub_80CCE0C sub_80CCE0C: @ 80CCE0C push {r4-r6,lr} -- cgit v1.2.3 From c1d498a5a3480944ab70e8f1cbb84a8daa64e720 Mon Sep 17 00:00:00 2001 From: "U-User-PC\\User" Date: Wed, 30 Aug 2017 16:31:41 -0400 Subject: fixing conflicts --- ld_script.txt | 56 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index c43906b68..070017666 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -55,12 +55,12 @@ SECTIONS { asm/battle_2.o(.text); src/battle_3.o(.text); src/battle_4.o(.text); - asm/battle_5.o(.text); - src/battle_6.o(.text); + src/battle_controller_player.o(.text); src/battle_7.o(.text); - src/battle_8.o(.text); + src/battle_controller_opponent.o(.text); asm/battle_9.o(.text); - src/battle_10.o(.text); + asm/battle_controller_linkopponent1.o(.text); + src/battle_controller_linkopponent2.o(.text); src/pokemon_1.o(.text); src/calculate_base_damage.o(.text); src/pokemon_2.o(.text); @@ -83,7 +83,7 @@ SECTIONS { asm/trade.o(.text.sub_804A9F4); src/trade.o(.text.sub_804DAD4); asm/trade.o(.text.sub_804DB2C); - asm/berry_blender.o(.text); + src/berry_blender.o(.text); src/play_time.o(.text); src/new_game.o(.text); src/rom4.o(.text); @@ -120,7 +120,7 @@ SECTIONS { src/battle_anim.o(.text); src/rom_8077ABC.o(.text); src/task.o(.text); - asm/reshow_battle_screen.o(.text); + src/reshow_battle_screen.o(.text); src/battle_anim_807B69C.o(.text); src/title_screen.o(.text); src/field_weather.o(.text); @@ -159,7 +159,6 @@ SECTIONS { src/matsuda_debug_menu.o(.text); asm/contest.o(.text); src/shop.o(.text); - asm/shop.o(.text); src/berry.o(.text); src/script_menu.o(.text); src/naming_screen.o(.text); @@ -181,6 +180,7 @@ SECTIONS { asm/contest_link_80C857C.o(.text); src/contest_link_80C857C.o(.text); src/item_use.o(.text); + src/battle_anim_80CA710.o(.text); asm/battle_anim_80CA710.o(.text); src/bike.o(.text); asm/easy_chat.o(.text); @@ -197,6 +197,7 @@ SECTIONS { src/dewford_trend.o(.text); src/heal_location.o(.text); src/region_map.o(.text); + src/cute_sketch.o(.text); asm/cute_sketch.o(.text); src/decoration.o(.text); asm/slot_machine.o(.text); @@ -226,9 +227,9 @@ SECTIONS { src/coins.o(.text); src/landmark.o(.text); src/fldeff_strength.o(.text); - asm/battle_transition.o(.text); - src/battle_811DA74.o(.text); - asm/battle_message.o(.text); + src/battle_transition.o(.text); + src/battle_controller_linkpartner.o(.text); + src/battle_message.o(.text); src/choose_party.o(.text); asm/cable_car.o(.text); asm/roulette_util.o(.text); @@ -239,17 +240,18 @@ SECTIONS { asm/field_effect_helpers.o(.text); asm/contest_ai.o(.text); asm/battle_anim_81258BC.o(.text); - src/battle_anim_81258BC.o(.text); - asm/battle_anim_81258BC.o(.text_812BBFC); + asm/battle_controller_safari.o(.text); + src/battle_controller_safari.o(.text); + asm/battle_controller_safari.o(.text_812BBFC); src/fldeff_sweetscent.o(.text); asm/battle_anim_812C144.o(.text); - asm/learn_move.o(.text); + src/learn_move.o(.text); src/fldeff_softboiled.o(.text); src/decoration_inventory.o(.text); src/roamer.o(.text); asm/battle_tower.o(.text); src/use_pokeblock.o(.text); - src/battle_anim_8137220.o(.text); + src/battle_controller_wally.o(.text); src/player_pc.o(.text); src/intro.o(.text); src/field_region_map.o(.text); @@ -262,10 +264,10 @@ SECTIONS { src/mystery_event_menu.o(.text); src/save_failed_screen.o(.text); src/braille_puzzles.o(.text); - asm/pokeblock_feed.o(.text); + src/pokeblock_feed.o(.text); src/clear_save_data_menu.o(.text); src/intro_credits_graphics.o(.text); - asm/evolution_graphics.o(.text); + src/evolution_graphics.o(.text); src/bard_music.o(.text); src/fldeff_teleport.o(.text); src/unknown_debug_menu.o(.text); @@ -330,7 +332,11 @@ SECTIONS { data/main_menu.o(.rodata); data/data2a.o(.rodata); src/battle_4.o(.rodata); + src/battle_controller_player.o(.rodata); data/data2b.o(.rodata); + src/battle_controller_opponent.o(.rodata); + src/battle_controller_linkopponent2.o(.rodata); + data/battle_moves.o(.rodata); src/battle_3.o(.rodata); src/pokemon_data.o(.rodata); . = ALIGN(4); @@ -341,7 +347,7 @@ SECTIONS { data/battle_interface.o(.rodata); src/pokeball.o(.rodata); data/trade.o(.rodata); - data/berry_blender.o(.rodata); + src/berry_blender.o(.rodata); src/new_game.o(.rodata); data/rom4.o(.rodata); data/tilesets.o(.rodata); @@ -397,7 +403,7 @@ SECTIONS { src/item.o(.rodata); data/matsuda_debug_menu.o(.rodata); data/contest.o(.rodata); - data/shop.o(.rodata); + src/shop.o(.rodata); src/berry.o(.rodata); src/script_menu.o(.rodata); src/naming_screen.o(.rodata); @@ -443,22 +449,22 @@ SECTIONS { data/roulette.o(.rodata); data/pokedex_cry_screen.o(.rodata); data/landmark.o(.rodata); - data/battle_transition.o(.rodata); - data/battle_811DA74.o(.rodata); + src/battle_transition.o(.rodata); + src/battle_controller_linkpartner.o(.rodata); data/battle_message.o(.rodata); src/choose_party.o(.rodata); data/cable_car.o(.rodata); src/save.o(.rodata); data/field_effect_helpers.o(.rodata); data/contest_ai.o(.rodata); - data/battle_anim_81258BC.o(.rodata); + src/battle_controller_safari.o(.rodata); data/battle_anim_812C144.o(.rodata); - data/learn_move.o(.rodata); + src/learn_move.o(.rodata); src/decoration_inventory.o(.rodata); src/roamer.o(.rodata); data/battle_tower.o(.rodata); src/use_pokeblock.o(.rodata); - data/battle_anim_8137220.o(.rodata); + src/battle_controller_wally.o(.rodata); src/player_pc.o(.rodata); src/intro.o(.rodata); data/battle_anim_813F0F4.o(.rodata); @@ -470,9 +476,9 @@ SECTIONS { src/strings.o(.rodata); src/berry_tag_screen.o(.rodata); src/save_failed_screen.o(.rodata); - data/pokeblock_feed.o(.rodata); + src/pokeblock_feed.o(.rodata); data/intro_credits_graphics.o(.rodata); - data/evolution_graphics.o(.rodata); + src/evolution_graphics.o(.rodata); data/bard_music.o(.rodata); data/unknown_debug_menu.o(.rodata); data/strings2.o(.rodata); -- cgit v1.2.3 From 272cd213391b5ce87cb2aeac263b3eedb0f19a07 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 20 Dec 2017 15:33:08 -0500 Subject: Add NDEBUG (NOAGBPRN) support to pokeruby. --- Makefile | 7 ++- include/assert.h | 43 ++++++++++++++ include/config.h | 16 ++++++ include/global.h | 1 + ld_script.txt | 87 +++++++++++++++++++++++++++- src/engine/main.c | 7 +++ src/libs/libc.c | 143 ---------------------------------------------- src/libs/libisagbprn.c | 151 +++++++++++++++++++++++++++++++++++++++++++++++++ sym_bss.txt | 37 ++++++++++++ 9 files changed, 346 insertions(+), 146 deletions(-) create mode 100755 include/assert.h delete mode 100644 src/libs/libc.c create mode 100755 src/libs/libisagbprn.c diff --git a/Makefile b/Makefile index e7e2a7156..c3df6d65f 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,8 @@ OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy LIBGCC := tools/agbcc/lib/libgcc.a +LIBC := tools/agbcc/lib/libc.a + SHA1 := sha1sum -c GFX := tools/gbagfx/gbagfx @@ -103,6 +105,9 @@ sound/songs/%.s: sound/songs/%.mid %src/libs/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc %src/libs/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc +%src/libs/libisagbprn.o: CC1 := tools/agbcc/bin/old_agbcc +%src/libs/libisagbprn.o: CFLAGS := -mthumb-interwork + $(SONG_OBJS): %.o: %.s $(AS) $(ASFLAGS) -I sound -o $@ $< @@ -161,7 +166,7 @@ build/$1/ld_script.ld: ld_script.txt build/$1/sym_bss.ld build/$1/sym_common.ld cd build/$1 && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" >ld_script.ld poke$1.elf: build/$1/ld_script.ld $$($1_OBJS) - cd build/$1 && $$(LD) -T ld_script.ld -Map ../../poke$1.map -o ../../$$@ $$($1_OBJS_REL) ../../$$(LIBGCC) + cd build/$1 && $$(LD) -T ld_script.ld -Map ../../poke$1.map -o ../../$$@ $$($1_OBJS_REL) ../../$$(LIBGCC) ../../$$(LIBC) poke$1.gba: %.gba: %.elf $$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $$< $$@ diff --git a/include/assert.h b/include/assert.h new file mode 100755 index 000000000..7a5e727e2 --- /dev/null +++ b/include/assert.h @@ -0,0 +1,43 @@ +#ifndef GUARD_GBASDKASSERT_H +#define GUARD_GBASDKASSERT_H + +// this header is based on the +// GBA SDK IsAgbAssert.h. + +#ifdef NOAGBPRN + #define AGBPrintInit() + #define AGBPutc(pBuf) + #define AGBPrint(pBuf) + #define AGBPrintf(...) + #define AGBPrintFlush1Block() + #define AGBPrintFlush() + #define AGBAssert(pFile, nLine, pExpression, nStopProgram) +#else + // without NOAGBPRN defined, this enables asserts for usage + // on a standard GBA debugger unit or in emulators that + // support it. + void AGBPrintInit(void); + void AGBPutc(const char pBuf); + void AGBPrint(const char *pBuf); + void AGBPrintf(const char *pBuf, ...); + void AGBPrintFlush1Block(void); + void AGBPrintFlush(void); + void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); +#endif + +// when using AGB_WARNING, be sure to flush after as AGBAssert does not flush the string to console +// immediately after usage. +#ifdef NOAGBPRN + #define AGB_ASSERT(expression) +#else + #define AGB_ASSERT(expression) (expression) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #expression, 1); +#endif + +#ifdef NOAGBPRN + #define AGB_WARNING(expression) +#else + #define AGB_WARNING(expression) (expression) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #expression, 0); +#endif + + +#endif diff --git a/include/config.h b/include/config.h index 6a77c4c74..d9ed70a7c 100644 --- a/include/config.h +++ b/include/config.h @@ -1,6 +1,22 @@ #ifndef GUARD_CONFIG_H #define GUARD_CONFIG_H +// In the Generation 3 games, Asserts were used in various debug builds. +// Ruby/Sapphire and Emerald do not have these asserts while Fire Red +// still has them in the ROM. This is because the developers forgot +// to define NOAGBPRN before release, which is actually supposed to be +// NDEBUG, however this has been changed as Ruby's actual debug build +// does not use the AGBPrint features. + +// To note, Ruby/Sapphire likely did not use AGBPrint. This is because +// the german debug ROM of Ruby did not have any uses of AGBPrint and +// the assert commands but instead a "crash" screen. This config exists +// for convenience for the user of pokeruby and NOT because it is +// authoritative. These additions are for user convenience based on +// officially recommended SDK practices for debugging and is therefore +// still in part authoritative. +#define NOAGBPRN + #ifndef REVISION #define REVISION 0 #endif diff --git a/include/global.h b/include/global.h index 6670f3837..7bd82f74e 100644 --- a/include/global.h +++ b/include/global.h @@ -3,6 +3,7 @@ #include "gba/gba.h" #include "config.h" +#include "assert.h" // IDE support #ifdef __APPLE__ diff --git a/ld_script.txt b/ld_script.txt index 6353fceec..67c259177 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -11,6 +11,44 @@ SECTIONS { { + tools/agbcc/lib/libc.a:memcpy.o(.data); + tools/agbcc/lib/libc.a:memset.o(.data); + tools/agbcc/lib/libc.a:strcmp.o(.data); + tools/agbcc/lib/libc.a:strcpy.o(.data); + tools/agbcc/lib/libc.a:impure.o(.data); + tools/agbcc/lib/libc.a:vsprintf.o(.data); + tools/agbcc/lib/libc.a:vfprintf.o(.data); + tools/agbcc/lib/libc.a:wsetup.o(.data); + tools/agbcc/lib/libc.a:dtoa.o(.data); + tools/agbcc/lib/libc.a:fflush.o(.data); + tools/agbcc/lib/libc.a:findfp.o(.data); + tools/agbcc/lib/libc.a:freer.o(.data); + tools/agbcc/lib/libc.a:mtrim.o(.data); + tools/agbcc/lib/libc.a:fvwrite.o(.data); + tools/agbcc/lib/libc.a:fwalk.o(.data); + tools/agbcc/lib/libc.a:locale.o(.data); + tools/agbcc/lib/libc.a:makebuf.o(.data); + tools/agbcc/lib/libc.a:mallocr.o(.data); + tools/agbcc/lib/libc.a:mbtowc_r.o(.data); + tools/agbcc/lib/libc.a:memchr.o(.data); + tools/agbcc/lib/libc.a:memmove.o(.data); + tools/agbcc/lib/libc.a:mlock.o(.data); + tools/agbcc/lib/libc.a:mprec.o(.data); + tools/agbcc/lib/libc.a:s_isinf.o(.data); + tools/agbcc/lib/libc.a:s_isnan.o(.data); + tools/agbcc/lib/libc.a:sbrkr.o(.data); + tools/agbcc/lib/libc.a:stdio.o(.data); + tools/agbcc/lib/libc.a:strlen.o(.data); + tools/agbcc/lib/libc.a:syscalls.o(.data); + tools/agbcc/lib/libc.a:writer.o(.data); + tools/agbcc/lib/libc.a:callocr.o(.data); + tools/agbcc/lib/libc.a:closer.o(.data); + tools/agbcc/lib/libc.a:errno.o(.data); + tools/agbcc/lib/libc.a:fstatr.o(.data); + tools/agbcc/lib/libc.a:libcfunc.o(.data); + tools/agbcc/lib/libc.a:lseekr.o(.data); + tools/agbcc/lib/libc.a:readr.o(.data); + . = 0x40000; } @@ -24,10 +62,12 @@ SECTIONS { /* .bss.code starts at 0x3000F60 */ src/libs/m4a_2.o(.bss.code); + tools/agbcc/lib/libc.a:syscalls.o(.bss); /* COMMON starts at 0x3001760 */ - + unk_code_ram = .; + tools/agbcc/lib/libc.a:sbrkr.o(COMMON); . = 0x8000; } @@ -36,6 +76,7 @@ SECTIONS { .text : ALIGN(4) { + unk_code = .; asm/crt0.o(.text); src/engine/main.o(.text); src/engine/sprite.o(.text); @@ -389,6 +430,7 @@ SECTIONS { src/debug/unknown_debug_menu.o(.text); src/engine/name_string_util.o(.text); src/engine/menu_cursor.o(.text); + unk_code_end = .; } =0 script_data : @@ -432,9 +474,46 @@ SECTIONS { tools/agbcc/lib/libgcc.a:fp-bit.o(.text); tools/agbcc/lib/libgcc.a:_lshrdi3.o(.text); tools/agbcc/lib/libgcc.a:_negdi2.o(.text); - src/libs/libc.o(.text); + tools/agbcc/lib/libc.a:memcpy.o(.text); + tools/agbcc/lib/libc.a:memset.o(.text); + tools/agbcc/lib/libc.a:strcmp.o(.text); + tools/agbcc/lib/libc.a:vfprintf.o(.text); + tools/agbcc/lib/libc.a:vsprintf.o(.text); + tools/agbcc/lib/libc.a:fvwrite.o(.text); + tools/agbcc/lib/libc.a:locale.o(.text); + tools/agbcc/lib/libc.a:findfp.o(.text); + tools/agbcc/lib/libc.a:fflush.o(.text); + tools/agbcc/lib/libc.a:wsetup.o(.text); + tools/agbcc/lib/libc.a:mbtowc_r.o(.text); + tools/agbcc/lib/libc.a:s_isinf.o(.text); + tools/agbcc/lib/libc.a:s_isnan.o(.text); + tools/agbcc/lib/libc.a:memchr.o(.text); + tools/agbcc/lib/libc.a:strlen.o(.text); + tools/agbcc/lib/libc.a:dtoa.o(.text); + tools/agbcc/lib/libc.a:memmove.o(.text); + tools/agbcc/lib/libc.a:stdio.o(.text); + tools/agbcc/lib/libc.a:mprec.o(.text); + tools/agbcc/lib/libc.a:mallocr.o(.text); + tools/agbcc/lib/libc.a:fwalk.o(.text); + tools/agbcc/lib/libc.a:freer.o(.text); + tools/agbcc/lib/libc.a:makebuf.o(.text); + tools/agbcc/lib/libc.a:readr.o(.text); + tools/agbcc/lib/libc.a:writer.o(.text); + tools/agbcc/lib/libc.a:lseekr.o(.text); + tools/agbcc/lib/libc.a:closer.o(.text); + tools/agbcc/lib/libc.a:callocr.o(.text); + tools/agbcc/lib/libc.a:sbrkr.o(.text); + tools/agbcc/lib/libc.a:mlock.o(.text); + tools/agbcc/lib/libc.a:fstatr.o(.text); + tools/agbcc/lib/libc.a:libcfunc.o(.text); + tools/agbcc/lib/libc.a:syscalls.o(.text); + tools/agbcc/lib/libc.a:errno.o(.text); + src/libs/libisagbprn.o(.text); } =0 + unk_code_ram_end = unk_code_ram + (unk_code_end - unk_code); + end = unk_code_ram_end; + .rodata : ALIGN(4) { @@ -1037,6 +1116,10 @@ SECTIONS { src/libs/agb_flash_le.o(.rodata); src/libs/siirtc.o(.rodata); tools/agbcc/lib/libgcc.a:_udivdi3.o(.rodata); + tools/agbcc/lib/libc.a(.rodata); + tools/agbcc/lib/libc.a(.data); + tools/agbcc/lib/libc.a:syscalls.o(.rodata); + src/libs/libisagbprn.o(.rodata); } =0 . = 0x8D00000; diff --git a/src/engine/main.c b/src/engine/main.c index 82a5fffb4..11c540d07 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -98,6 +98,13 @@ void AgbMain() gSoftResetDisabled = FALSE; +// In Fire Red, AGBPrintInit is called at this spot. For user convenience, I +// opt to initialize the print area here. It is up to the user where they choose +// to print stuff from, as anything else declared is NOT authoritative. +#ifndef NOAGBPRN + AGBPrintInit(); +#endif + if (gFlashMemoryPresent != TRUE) SetMainCallback2(NULL); diff --git a/src/libs/libc.c b/src/libs/libc.c deleted file mode 100644 index 920673e3e..000000000 --- a/src/libs/libc.c +++ /dev/null @@ -1,143 +0,0 @@ -#include "global.h" -#include - -#define LBLOCKSIZE (sizeof(long)) - -// Nonzero if (long)X contains a NULL byte. -#define CONTAINSNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) - -// Nonzero if X is not aligned on a "long" boundary. -#define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) - -void *memcpy(void *dst0, const void *src0, size_t len0) -{ - char *dst = dst0; - const char *src = src0; - long *aligned_dst; - const long *aligned_src; - unsigned int len = len0; - - // If the size is small, or either src or dst is unaligned, - // then go to the byte copy loop. This should be rare. - if (len >= 16 && !(UNALIGNED(src) | UNALIGNED(dst))) - { - aligned_dst = (long *)dst; - aligned_src = (long *)src; - - // Copy 4X long words at a time if possible. - while (len >= 16) - { - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - len -= 16; - } - - // Copy one long word at a time if possible - while (len >= 4) - { - *aligned_dst++ = *aligned_src++; - len -= 4; - } - - dst = (char *)aligned_dst; - src = (char *)aligned_src; - } - - // Pick up any remaining bytes with a byte copier. - while (len--) - *dst++ = *src++; - - return dst0; -} - -void *memset(void *m, int c, size_t n) -{ - char *s = (char *)m; - int count, i; - unsigned long buffer; - unsigned long *aligned_addr; - unsigned char *unaligned_addr; - - // If the size is small or m is unaligned, - // then go to the byte copy loop. This should be rare. - if (n >= LBLOCKSIZE && !UNALIGNED(m)) - { - // We know that n is large and m is word-aligned. - aligned_addr = (unsigned long *)m; - - // Store C into each char sized location in buffer so that - // we can set large blocks quickly. - c &= 0xFF; - if (LBLOCKSIZE == 4) - { - buffer = (c << 8) | c; - buffer |= (buffer << 16); - } - else - { - buffer = 0; - for (i = 0; i < LBLOCKSIZE; i++) - buffer = (buffer << 8) | c; - } - - while (n >= LBLOCKSIZE * 4) - { - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - n -= LBLOCKSIZE * 4; - } - while (n >= LBLOCKSIZE) - { - *aligned_addr++ = buffer; - n -= LBLOCKSIZE; - } - - s = (char *)aligned_addr; - } - - // Pick up the remainder with a bytewise loop. - while (n--) - *s++ = (char)c; - - return m; -} - -int strcmp(const char *s1, const char *s2) -{ - unsigned long *a1; - unsigned long *a2; - - // If s1 or s2 are unaligned, then skip this and compare bytes. - if (!(UNALIGNED(s1) | UNALIGNED(s2))) - { - // Compare them a word at a time. - a1 = (unsigned long *)s1; - a2 = (unsigned long *)s2; - while (*a1 == *a2) - { - // If *a1 == *a2, and we find a null in *a1, - // then the strings must be equal, so return zero. - if (CONTAINSNULL(*a1)) - return 0; - - a1++; - a2++; - } - - s1 = (char *)a1; - s2 = (char *)a2; - } - - // Check the remaining few bytes. - while (*s1 != '\0' && *s1 == *s2) - { - s1++; - s2++; - } - - return (*(unsigned char *) s1) - (*(unsigned char *) s2); -} diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c new file mode 100755 index 000000000..64ccb6351 --- /dev/null +++ b/src/libs/libisagbprn.c @@ -0,0 +1,151 @@ +#include +#include +#include "gba/gba.h" +#include "config.h" + +#define AGB_PRINT_FLUSH_ADDR 0x9FE209D +#define AGB_PRINT_STRUCT_ADDR 0x9FE20F8 +#define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE +#define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) + +struct AGBPrintStruct +{ + u16 m_nRequest; + u16 m_nBank; + u16 m_nGet; + u16 m_nPut; +}; + +typedef void (*LPFN_PRINT_FLUSH)(void); + +#ifndef NOAGBPRN +void AGBPrintFlush1Block(void); + +void AGBPrintInit(void) +{ + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + *pProtect = 0x20; + pPrint->m_nRequest = pPrint->m_nGet = pPrint->m_nPut = 0; + pPrint->m_nBank = 0xFD; + *pProtect = 0; + *pWSCNT = nOldWSCNT; +} + +static void AGBPutcInternal(const char cChr) +{ + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pPrintBuf = (u16 *)(0x8000000 + (pPrint->m_nBank << 16)); + u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + u16 nData = pPrintBuf[pPrint->m_nPut / 2]; + *pProtect = 0x20; + nData = (pPrint->m_nPut & 1) ? (nData & 0xFF) | (cChr << 8) : (nData & 0xFF00) | cChr; + pPrintBuf[pPrint->m_nPut / 2] = nData; + pPrint->m_nPut++; + *pProtect = 0; +} + +void AGBPutc(const char cChr) +{ + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + volatile struct AGBPrintStruct *pPrint; + *pWSCNT = WSCNT_DATA; + AGBPutcInternal(cChr); + *pWSCNT = nOldWSCNT; + pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + if (pPrint->m_nPut == ((pPrint->m_nGet - 1) & 0xFFFF)) + AGBPrintFlush1Block(); +} + +void AGBPrint(const char *pBuf) +{ + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + while (*pBuf) + { + AGBPutc(*pBuf); + pBuf++; + } + *pWSCNT = nOldWSCNT; +} + +void AGBPrintf(const char *pBuf, ...) +{ + char bufPrint[0x100]; + va_list vArgv; + va_start(vArgv, pBuf); + vsprintf(bufPrint, pBuf, vArgv); + va_end(vArgv); + AGBPrint(bufPrint); +} + +static void AGBPrintTransferDataInternal(u32 bAllData) +{ + LPFN_PRINT_FLUSH lpfnFuncFlush; + u16 *pIME; + u16 nIME; + u16 *pWSCNT; + u16 nOldWSCNT; + u16 *pProtect; + volatile struct AGBPrintStruct *pPrint; + + pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + lpfnFuncFlush = (LPFN_PRINT_FLUSH)AGB_PRINT_FLUSH_ADDR; + pIME = (u16 *)REG_ADDR_IME; + nIME = *pIME; + pWSCNT = (u16 *)REG_ADDR_WAITCNT; + nOldWSCNT = *pWSCNT; + *pIME = nIME & ~1; + *pWSCNT = WSCNT_DATA; + + if (bAllData) + { + while (pPrint->m_nPut != pPrint->m_nGet) + { + *pProtect = 0x20; + lpfnFuncFlush(); + *pProtect = 0; + } + } + else if (pPrint->m_nPut != pPrint->m_nGet) + { + *pProtect = 0x20; + lpfnFuncFlush(); + *pProtect = 0; + } + + *pWSCNT = nOldWSCNT; + *pIME = nIME; +} + +void AGBPrintFlush1Block(void) +{ + AGBPrintTransferDataInternal(FALSE); +} + +void AGBPrintFlush(void) +{ + AGBPrintTransferDataInternal(TRUE); +} + +void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram) +{ + if (nStopProgram) + { + AGBPrintf("ASSERTION FAILED FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); + AGBPrintFlush(); + asm(".hword 0xEFFF"); + } + else + { + AGBPrintf("WARING FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); + } +} +#endif diff --git a/sym_bss.txt b/sym_bss.txt index 6587c2c39..ff3b3de01 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -39,3 +39,40 @@ .include "src/libs/siirtc.o" .include "tools/agbcc/lib/libgcc.a:dp-bit.o" .include "tools/agbcc/lib/libgcc.a:fp-bit.o" + .include "tools/agbcc/lib/libc.a:memcpy.o" + .include "tools/agbcc/lib/libc.a:memset.o" + .include "tools/agbcc/lib/libc.a:strcmp.o" + .include "tools/agbcc/lib/libc.a:strcpy.o" + .include "tools/agbcc/lib/libc.a:impure.o" + .include "tools/agbcc/lib/libc.a:vsprintf.o" + .include "tools/agbcc/lib/libc.a:vfprintf.o" + .include "tools/agbcc/lib/libc.a:wsetup.o" + .include "tools/agbcc/lib/libc.a:dtoa.o" + .include "tools/agbcc/lib/libc.a:fflush.o" + .include "tools/agbcc/lib/libc.a:findfp.o" + .include "tools/agbcc/lib/libc.a:freer.o" + .include "tools/agbcc/lib/libc.a:mtrim.o" + .include "tools/agbcc/lib/libc.a:fvwrite.o" + .include "tools/agbcc/lib/libc.a:fwalk.o" + .include "tools/agbcc/lib/libc.a:locale.o" + .include "tools/agbcc/lib/libc.a:makebuf.o" + .include "tools/agbcc/lib/libc.a:mallocr.o" + .include "tools/agbcc/lib/libc.a:mbtowc_r.o" + .include "tools/agbcc/lib/libc.a:memchr.o" + .include "tools/agbcc/lib/libc.a:memmove.o" + .include "tools/agbcc/lib/libc.a:mlock.o" + .include "tools/agbcc/lib/libc.a:mprec.o" + .include "tools/agbcc/lib/libc.a:s_isinf.o" + .include "tools/agbcc/lib/libc.a:s_isnan.o" + .include "tools/agbcc/lib/libc.a:sbrkr.o" + .include "tools/agbcc/lib/libc.a:stdio.o" + .include "tools/agbcc/lib/libc.a:strlen.o" + .include "tools/agbcc/lib/libc.a:syscalls.o" + .include "tools/agbcc/lib/libc.a:writer.o" + .include "tools/agbcc/lib/libc.a:callocr.o" + .include "tools/agbcc/lib/libc.a:closer.o" + .include "tools/agbcc/lib/libc.a:errno.o" + .include "tools/agbcc/lib/libc.a:fstatr.o" + .include "tools/agbcc/lib/libc.a:libcfunc.o" + .include "tools/agbcc/lib/libc.a:lseekr.o" + .include "tools/agbcc/lib/libc.a:readr.o" -- cgit v1.2.3 From a3c7adb2ede2aead120f763bc49306caf69be9e4 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 27 Dec 2017 20:58:19 -0500 Subject: simplify linker script additions for assert support --- ld_script.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index 3e8f45121..18158ecfe 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -66,8 +66,8 @@ SECTIONS { /* COMMON starts at 0x3001760 */ - unk_code_ram = .; tools/agbcc/lib/libc.a:sbrkr.o(COMMON); + end = .; . = 0x8000; } @@ -76,7 +76,6 @@ SECTIONS { .text : ALIGN(4) { - unk_code = .; asm/crt0.o(.text); src/engine/main.o(.text); src/engine/sprite.o(.text); @@ -431,7 +430,6 @@ SECTIONS { src/debug/unknown_debug_menu.o(.text); src/engine/name_string_util.o(.text); src/engine/menu_cursor.o(.text); - unk_code_end = .; } =0 script_data : @@ -512,9 +510,6 @@ SECTIONS { src/libs/libisagbprn.o(.text); } =0 - unk_code_ram_end = unk_code_ram + (unk_code_end - unk_code); - end = unk_code_ram_end; - .rodata : ALIGN(4) { -- cgit v1.2.3 From d6f88aaae447dbc22ff5fa289343343e7034263b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 28 Dec 2017 02:47:41 -0500 Subject: fix for printf --- src/engine/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/engine/main.c b/src/engine/main.c index 11c540d07..e52551f72 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -83,6 +83,10 @@ static void WaitForVBlank(void); #define B_START_SELECT (B_BUTTON | START_BUTTON | SELECT_BUTTON) +#ifndef NOAGBPRN + #include // don't include if not needed. +#endif + void AgbMain() { RegisterRamReset(RESET_ALL); @@ -103,6 +107,7 @@ void AgbMain() // to print stuff from, as anything else declared is NOT authoritative. #ifndef NOAGBPRN AGBPrintInit(); + __mb_cur_max = 1; // fix for AGBPrintf #endif if (gFlashMemoryPresent != TRUE) -- cgit v1.2.3 From d50dcfcdd37aedab6352e4953cb2be04f2691113 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 2 Jan 2018 00:53:26 -0500 Subject: add no print support. --- include/assert.h | 14 +++++++++++++- src/libs/libisagbprn.c | 44 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/include/assert.h b/include/assert.h index 7a5e727e2..d724290fa 100755 --- a/include/assert.h +++ b/include/assert.h @@ -16,6 +16,16 @@ // without NOAGBPRN defined, this enables asserts for usage // on a standard GBA debugger unit or in emulators that // support it. + +// no$gba support, due to the different method no$gba uses to print debug strings. +// currently cannot use IsNoGba due to no$gba doing a gloriously fuck up of a job and +// breaking the version identifier. +#define AGBPrint(pBuf) \ +{ \ + NOGBAPrint(pBuf); \ + AGBPrint(pBuf); \ +} + void AGBPrintInit(void); void AGBPutc(const char pBuf); void AGBPrint(const char *pBuf); @@ -23,6 +33,9 @@ void AGBPrintFlush1Block(void); void AGBPrintFlush(void); void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); + // NOGBA PROTOTYPES FOR LIBISAGBPRN.C + bool32 IsNoGba(void); + void NOGBAPrint(const char *pBuf); #endif // when using AGB_WARNING, be sure to flush after as AGBAssert does not flush the string to console @@ -39,5 +52,4 @@ #define AGB_WARNING(expression) (expression) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #expression, 0); #endif - #endif diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 64ccb6351..9691d1b90 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -2,12 +2,17 @@ #include #include "gba/gba.h" #include "config.h" +#include "assert.h" #define AGB_PRINT_FLUSH_ADDR 0x9FE209D #define AGB_PRINT_STRUCT_ADDR 0x9FE20F8 #define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE #define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) +// for auto no$gba support, the string "no$gba" should be at this address. +#define NOGBAIDADDR 0x4FFFA00 +#define NOGBAPRINTADDR 0x4FFFA14 + struct AGBPrintStruct { u16 m_nRequest; @@ -61,18 +66,29 @@ void AGBPutc(const char cChr) AGBPrintFlush1Block(); } +#undef AGBPrint // dont break the function + void AGBPrint(const char *pBuf) { - volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; - u16 nOldWSCNT = *pWSCNT; - *pWSCNT = WSCNT_DATA; - while (*pBuf) - { - AGBPutc(*pBuf); - pBuf++; - } - *pWSCNT = nOldWSCNT; + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + while (*pBuf) + { + AGBPutc(*pBuf); + pBuf++; + } + *pWSCNT = nOldWSCNT; +} + +// I have to define this twice to avoid messing AGBPrint up. If there's a better way of doing this, please fix it. +// currently cannot use IsNoGba due to no$gba doing a gloriously fuck up of a job and +// breaking the version identifier. +#define AGBPrint(pBuf) \ +{ \ + NOGBAPrint(pBuf); \ + AGBPrint(pBuf); \ } void AGBPrintf(const char *pBuf, ...) @@ -148,4 +164,12 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP AGBPrintf("WARING FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); } } + +// nogba print function + +void NOGBAPrint(const char *pBuf) +{ + *(volatile u32*)NOGBAPRINTADDR = (u32)pBuf; +} + #endif -- cgit v1.2.3 From 6c5e0ef4d873ae89708b7ebc547f2243893359f4 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 2 Jan 2018 00:54:56 -0500 Subject: remove function that doesn't exist anymore. --- include/assert.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/assert.h b/include/assert.h index d724290fa..5a134d7c9 100755 --- a/include/assert.h +++ b/include/assert.h @@ -33,8 +33,7 @@ void AGBPrintFlush1Block(void); void AGBPrintFlush(void); void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); - // NOGBA PROTOTYPES FOR LIBISAGBPRN.C - bool32 IsNoGba(void); + // NOGBA PROTOTYPE FOR LIBISAGBPRN.C void NOGBAPrint(const char *pBuf); #endif -- cgit v1.2.3 From ab06b56532026db85a9cba1c21c8b2235fcdf222 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 2 Jan 2018 00:56:11 -0500 Subject: formatting --- src/libs/libisagbprn.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 9691d1b90..ef0d51f26 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -70,16 +70,16 @@ void AGBPutc(const char cChr) void AGBPrint(const char *pBuf) { - volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; - u16 nOldWSCNT = *pWSCNT; - *pWSCNT = WSCNT_DATA; - while (*pBuf) - { - AGBPutc(*pBuf); - pBuf++; - } - *pWSCNT = nOldWSCNT; + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + while (*pBuf) + { + AGBPutc(*pBuf); + pBuf++; + } + *pWSCNT = nOldWSCNT; } // I have to define this twice to avoid messing AGBPrint up. If there's a better way of doing this, please fix it. -- cgit v1.2.3 From 4a01c3233aa8758a9a56fa419642c8bc4590d09a Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Thu, 4 Jan 2018 04:15:17 +0100 Subject: Decompiled poison.s --- asm/poison.s | 364 ----------------------------------------------- ld_script.txt | 2 +- src/battle/anim/poison.c | 115 +++++++++++++++ src/rom_8077ABC.c | 4 +- 4 files changed, 118 insertions(+), 367 deletions(-) delete mode 100755 asm/poison.s create mode 100644 src/battle/anim/poison.c diff --git a/asm/poison.s b/asm/poison.s deleted file mode 100755 index 234348df2..000000000 --- a/asm/poison.s +++ /dev/null @@ -1,364 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ poison - - thumb_func_start sub_80D9D70 -sub_80D9D70: @ 80D9D70 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080D9DC4 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D9D86 - adds r0, r5, 0 - movs r1, 0x2 - bl StartSpriteAnim -_080D9D86: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - ldrh r0, [r4, 0x4] - strh r0, [r5, 0x2E] - ldr r4, _080D9DC8 @ =gAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080D9DCC @ =0x0000ffe2 - strh r0, [r5, 0x38] - adds r0, r5, 0 - bl sub_80786EC - ldr r0, _080D9DD0 @ =sub_80D9DD4 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9DC4: .4byte gBattleAnimArgs -_080D9DC8: .4byte gAnimBankTarget -_080D9DCC: .4byte 0x0000ffe2 -_080D9DD0: .4byte sub_80D9DD4 - thumb_func_end sub_80D9D70 - - thumb_func_start sub_80D9DD4 -sub_80D9DD4: @ 80D9DD4 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080D9DE8 - adds r0, r4, 0 - bl DestroyAnimSprite -_080D9DE8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9DD4 - - thumb_func_start sub_80D9DF0 -sub_80D9DF0: @ 80D9DF0 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r5, _080D9E64 @ =gBattleAnimArgs - movs r1, 0x6 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D9E08 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim -_080D9E08: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080D9E68 @ =gAnimBankTarget - ldrb r0, [r0] - mov r6, sp - adds r6, 0x2 - movs r1, 0x1 - mov r2, sp - adds r3, r6, 0 - bl sub_807A3FC - ldr r0, _080D9E6C @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9E36 - ldrh r0, [r5, 0x8] - negs r0, r0 - strh r0, [r5, 0x8] -_080D9E36: - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - mov r1, sp - ldrh r0, [r5, 0x8] - ldrh r1, [r1] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r5, 0xA] - ldrh r6, [r6] - adds r0, r6 - strh r0, [r4, 0x36] - ldr r0, _080D9E70 @ =0x0000ffe2 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl sub_80786EC - ldr r0, _080D9E74 @ =sub_80D9E78 - str r0, [r4, 0x1C] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D9E64: .4byte gBattleAnimArgs -_080D9E68: .4byte gAnimBankTarget -_080D9E6C: .4byte gAnimBankAttacker -_080D9E70: .4byte 0x0000ffe2 -_080D9E74: .4byte sub_80D9E78 - thumb_func_end sub_80D9DF0 - - thumb_func_start sub_80D9E78 -sub_80D9E78: @ 80D9E78 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080D9E8C - adds r0, r4, 0 - bl DestroyAnimSprite -_080D9E8C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9E78 - - thumb_func_start sub_80D9E94 -sub_80D9E94: @ 80D9E94 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D9EE0 @ =gBattleAnimArgs - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldrh r1, [r5] - adds r0, r1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrh r1, [r5, 0x2] - adds r0, r1 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_8078A5C - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r4, 0x38] - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl __divsi3 - strh r0, [r4, 0x3A] - ldr r0, _080D9EE4 @ =sub_80D9EE8 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9EE0: .4byte gBattleAnimArgs -_080D9EE4: .4byte sub_80D9EE8 - thumb_func_end sub_80D9E94 - - thumb_func_start sub_80D9EE8 -sub_80D9EE8: @ 80D9EE8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078394 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x38] - subs r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x32] - ldrh r1, [r4, 0x3A] - subs r0, r1 - strh r0, [r4, 0x32] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D9F0E - adds r0, r4, 0 - bl DestroyAnimSprite -_080D9F0E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9EE8 - - thumb_func_start sub_80D9F14 -sub_80D9F14: @ 80D9F14 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D9F74 @ =gAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl sub_807A3FC - ldr r0, _080D9F78 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9F40 - ldr r1, _080D9F7C @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080D9F40: - ldr r0, _080D9F7C @ =gBattleAnimArgs - ldrh r2, [r0] - ldrh r1, [r4, 0x20] - adds r2, r1 - strh r2, [r4, 0x20] - ldrh r1, [r0, 0x2] - ldrh r3, [r4, 0x22] - adds r1, r3 - strh r1, [r4, 0x22] - ldrh r3, [r0, 0x8] - strh r3, [r4, 0x2E] - ldrh r0, [r0, 0x4] - adds r2, r0 - strh r2, [r4, 0x32] - adds r1, r3 - strh r1, [r4, 0x36] - ldr r0, _080D9F80 @ =sub_8078B34 - str r0, [r4, 0x1C] - ldr r1, _080D9F84 @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D9F74: .4byte gAnimBankTarget -_080D9F78: .4byte gAnimBankAttacker -_080D9F7C: .4byte gBattleAnimArgs -_080D9F80: .4byte sub_8078B34 -_080D9F84: .4byte DestroyAnimSprite - thumb_func_end sub_80D9F14 - - thumb_func_start sub_80D9F88 -sub_80D9F88: @ 80D9F88 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _080D9FA0 @ =gBattleAnimArgs - movs r1, 0x4 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080D9FA4 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8078764 - b _080D9FDA - .align 2, 0 -_080D9FA0: .4byte gBattleAnimArgs -_080D9FA4: - ldr r0, _080D9FE4 @ =gAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0x1 - bl sub_807A3FC - ldr r0, _080D9FE8 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D9FCA - ldrh r0, [r5] - negs r0, r0 - strh r0, [r5] -_080D9FCA: - ldrh r0, [r5] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r5, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] -_080D9FDA: - ldr r0, _080D9FEC @ =sub_80D9FF0 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D9FE4: .4byte gAnimBankTarget -_080D9FE8: .4byte gAnimBankAttacker -_080D9FEC: .4byte sub_80D9FF0 - thumb_func_end sub_80D9F88 - - thumb_func_start sub_80D9FF0 -sub_80D9FF0: @ 80D9FF0 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0xB - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x30 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080DA02C - adds r0, r4, 0 - bl DestroyAnimSprite -_080DA02C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D9FF0 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 6d35da842..af6e248d2 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -290,7 +290,7 @@ SECTIONS { asm/current.o(.text); asm/ice.o(.text); asm/fight.o(.text); - asm/poison.o(.text); + src/battle/anim/poison.o(.text); asm/flying.o(.text); asm/psychic.o(.text); asm/bug.o(.text); diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c new file mode 100644 index 000000000..c53fb2a8b --- /dev/null +++ b/src/battle/anim/poison.c @@ -0,0 +1,115 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +void sub_80D9DD4(struct Sprite *sprite); +void sub_80D9E78(struct Sprite *sprite); +void sub_80D9EE8(struct Sprite *sprite); +void sub_80D9FF0(struct Sprite *sprite); + +void sub_80D9D70(struct Sprite *sprite) { + if (!gBattleAnimArgs[3]) { + StartSpriteAnim(sprite, 2); + } + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + sprite->data[5] = -30; + sub_80786EC(sprite); + sprite->callback = sub_80D9DD4; +} + +void sub_80D9DD4(struct Sprite *sprite) { + if (sub_8078718(sprite)) { + DestroyAnimSprite(sprite); + } +} + +void sub_80D9DF0(struct Sprite *sprite) { + s16 l1, l2; + if (!gBattleAnimArgs[3]) { + StartSpriteAnim(sprite, 2); + } + sub_80787B0(sprite, 1); + sub_807A3FC(gAnimBankTarget, 1, &l1, &l2); + if (GetBankSide(gAnimBankAttacker)) { + gBattleAnimArgs[4] = -gBattleAnimArgs[4]; + } + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = l1 + gBattleAnimArgs[4]; + sprite->data[4] = l2 + gBattleAnimArgs[5]; + sprite->data[5] = -30; + sub_80786EC(sprite); + sprite->callback = sub_80D9E78; +} + +void sub_80D9E78(struct Sprite *sprite) { + if (sub_8078718(sprite)) { + DestroyAnimSprite(sprite); + } +} + +void sub_80D9E94(struct Sprite *sprite) { + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; + sub_8078A5C(sprite); + sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; + sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; + sprite->callback = sub_80D9EE8; +} + +void sub_80D9EE8(struct Sprite *sprite) { + sub_8078394(sprite); + sprite->data[1] -= sprite->data[5]; + sprite->data[2] -= sprite->data[6]; + if (!sprite->data[0]) { + DestroyAnimSprite(sprite); + } +} + +void sub_80D9F14(struct Sprite *sprite) { + sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); + if (GetBankSide(gAnimBankAttacker)) { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.y + sprite->data[0]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80D9F88(struct Sprite *sprite) { + if (!gBattleAnimArgs[2]) { + sub_8078764(sprite, TRUE); + } else { + sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); + if (GetBankSide(gAnimBankAttacker)) { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + sprite->callback = sub_80D9FF0; +} + +void sub_80D9FF0(struct Sprite *sprite) { + sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF; + sprite->pos2.x = Sin(sprite->data[0], 4); + sprite->data[1] += 0x30; + sprite->pos2.y = -(sprite->data[1] >> 8); + if (sprite->affineAnimEnded) { + DestroyAnimSprite(sprite); + } +} \ No newline at end of file diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 9cf28a111..667f74a25 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -698,7 +698,7 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite) { sprite->pos2.y = 0; } -void sub_8078764(struct Sprite *sprite, u8 a2) { +void sub_8078764(struct Sprite *sprite, bool8 a2) { if (!a2) { sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 0); sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 1); @@ -1841,7 +1841,7 @@ int sub_807A100(u8 slot, u8 a2) { } } -void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) { +void sub_807A3FC(u8 slot, bool8 a2, s16 *a3, s16 *a4) { u8 v1, v2; s16 v3, v4; s16 v5, v6; -- cgit v1.2.3 From 5588053754c2f1e293123cb1b793b867848f7c04 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Thu, 4 Jan 2018 23:05:01 +0100 Subject: Formatted to fit with the rest of the source code --- src/battle/anim/poison.c | 83 +++++++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c index c53fb2a8b..f31c441fb 100644 --- a/src/battle/anim/poison.c +++ b/src/battle/anim/poison.c @@ -12,104 +12,129 @@ void sub_80D9E78(struct Sprite *sprite); void sub_80D9EE8(struct Sprite *sprite); void sub_80D9FF0(struct Sprite *sprite); -void sub_80D9D70(struct Sprite *sprite) { - if (!gBattleAnimArgs[3]) { +void sub_80D9D70(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[3]) StartSpriteAnim(sprite, 2); - } + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); sprite->data[5] = -30; + sub_80786EC(sprite); + sprite->callback = sub_80D9DD4; } -void sub_80D9DD4(struct Sprite *sprite) { - if (sub_8078718(sprite)) { +void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78 +{ + if (sub_8078718(sprite)) DestroyAnimSprite(sprite); - } } -void sub_80D9DF0(struct Sprite *sprite) { +void sub_80D9DF0(struct Sprite *sprite) +{ s16 l1, l2; - if (!gBattleAnimArgs[3]) { + if (!gBattleAnimArgs[3]) StartSpriteAnim(sprite, 2); - } + sub_80787B0(sprite, 1); sub_807A3FC(gAnimBankTarget, 1, &l1, &l2); - if (GetBankSide(gAnimBankAttacker)) { + + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[4] = -gBattleAnimArgs[4]; - } + sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = l1 + gBattleAnimArgs[4]; sprite->data[4] = l2 + gBattleAnimArgs[5]; sprite->data[5] = -30; + sub_80786EC(sprite); + sprite->callback = sub_80D9E78; } -void sub_80D9E78(struct Sprite *sprite) { - if (sub_8078718(sprite)) { +void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4 +{ + if (sub_8078718(sprite)) DestroyAnimSprite(sprite); - } } -void sub_80D9E94(struct Sprite *sprite) { +void sub_80D9E94(struct Sprite *sprite) +{ sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = sprite->pos1.x; sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; + sub_8078A5C(sprite); + sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; + sprite->callback = sub_80D9EE8; } -void sub_80D9EE8(struct Sprite *sprite) { +void sub_80D9EE8(struct Sprite *sprite) +{ sub_8078394(sprite); + sprite->data[1] -= sprite->data[5]; sprite->data[2] -= sprite->data[6]; - if (!sprite->data[0]) { + + if (!sprite->data[0]) DestroyAnimSprite(sprite); - } } -void sub_80D9F14(struct Sprite *sprite) { +void sub_80D9F14(struct Sprite *sprite) +{ sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); - if (GetBankSide(gAnimBankAttacker)) { + + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; - } + sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; sprite->data[4] = sprite->pos1.y + sprite->data[0]; + sprite->callback = sub_8078B34; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80D9F88(struct Sprite *sprite) { - if (!gBattleAnimArgs[2]) { +void sub_80D9F88(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[2]) + { sub_8078764(sprite, TRUE); - } else { + } + else + { sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); - if (GetBankSide(gAnimBankAttacker)) { + + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; - } + sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; } + sprite->callback = sub_80D9FF0; } -void sub_80D9FF0(struct Sprite *sprite) { +void sub_80D9FF0(struct Sprite *sprite) +{ sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF; sprite->pos2.x = Sin(sprite->data[0], 4); sprite->data[1] += 0x30; sprite->pos2.y = -(sprite->data[1] >> 8); - if (sprite->affineAnimEnded) { + + if (sprite->affineAnimEnded) DestroyAnimSprite(sprite); - } } \ No newline at end of file -- cgit v1.2.3 From 0bbbc1c6dfc6c2b8646276de94cedab9ddc8bc4b Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sat, 6 Jan 2018 00:06:06 +0100 Subject: Started decompiling wisp_fire.s --- asm/wisp_fire.s | 144 -------------------------------------------- ld_script.txt | 1 + src/battle/anim/wisp_fire.c | 48 +++++++++++++++ 3 files changed, 49 insertions(+), 144 deletions(-) create mode 100644 src/battle/anim/wisp_fire.c diff --git a/asm/wisp_fire.s b/asm/wisp_fire.s index a6407589f..5fc7a07ab 100755 --- a/asm/wisp_fire.s +++ b/asm/wisp_fire.s @@ -7,150 +7,6 @@ @ wisp_fire - thumb_func_start sub_80D5CC0 -sub_80D5CC0: @ 80D5CC0 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080D5CD8 - ldr r0, _080D5D4C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x30] - adds r0, r1, 0x1 - strh r0, [r4, 0x2E] -_080D5CD8: - movs r0, 0xC0 - lsls r0, 1 - adds r1, r0, 0 - ldrh r2, [r4, 0x34] - adds r1, r2 - strh r1, [r4, 0x34] - ldrh r0, [r4, 0x36] - adds r0, 0xA0 - strh r0, [r4, 0x36] - movs r2, 0x30 - ldrsh r0, [r4, r2] - lsls r1, 16 - asrs r1, 24 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x36] - lsls r1, 16 - asrs r1, 24 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r2, r0, 0x7 - movs r0, 0xFF - ands r2, r0 - strh r2, [r4, 0x30] - ldr r0, _080D5D50 @ =gMain - ldr r1, _080D5D54 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080D5D84 - adds r0, r2, 0 - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x83 - bls _080D5D5C - ldr r0, _080D5D58 @ =gAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r4, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x5] - b _080D5DA0 - .align 2, 0 -_080D5D4C: .4byte gBattleAnimArgs -_080D5D50: .4byte gMain -_080D5D54: .4byte 0x0000043d -_080D5D58: .4byte gAnimBankTarget -_080D5D5C: - ldr r0, _080D5D80 @ =gAnimBankTarget - ldrb r0, [r0] - bl sub_8079ED4 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] - b _080D5DA0 - .align 2, 0 -_080D5D80: .4byte gAnimBankTarget -_080D5D84: - adds r0, r2, 0 - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x83 - bls _080D5D98 - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1D - b _080D5D9E -_080D5D98: - adds r1, r4, 0 - adds r1, 0x43 - movs r0, 0x1F -_080D5D9E: - strb r0, [r1] -_080D5DA0: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D5DC8 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D5DC8: - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0x1E - bne _080D5DD6 - adds r0, r4, 0 - bl DestroyAnimSprite -_080D5DD6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D5CC0 - thumb_func_start sub_80D5DDC sub_80D5DDC: @ 80D5DDC push {r4,lr} diff --git a/ld_script.txt b/ld_script.txt index af6e248d2..4eeaab513 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -283,6 +283,7 @@ SECTIONS { src/battle/anim/fire_2.o(.text); src/battle/anim/heated_rock.o(.text); src/battle/anim/wisp_orb.o(.text); + src/battle/anim/wisp_fire.o(.text); asm/wisp_fire.o(.text); src/battle/anim/thunder.o(.text); src/battle/anim/beta_beat_up.o(.text); diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c new file mode 100644 index 000000000..e31c15d9c --- /dev/null +++ b/src/battle/anim/wisp_fire.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "battle_anim.h" +#include "main.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankTarget; +// extern u8 gAnimBankAttacker; + +void sub_80D5CC0(struct Sprite *sprite) +{ + if (!sprite->data[0]) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[0] += 1; + } + + sprite->data[3] += 0xC0 * 2; + sprite->data[4] += 0xA0; + + sprite->pos2.x = Sin(sprite->data[1], sprite->data[3] >> 8); + sprite->pos2.y = Cos(sprite->data[1], sprite->data[4] >> 8); + + sprite->data[1] = (sprite->data[1] + 7) & 0xFF; + + if (gMain.inBattle) + if ((u16) (sprite->data[1] - 0x40) > 0x83) + sprite->oam.priority = sub_8079ED4(gAnimBankTarget); + else + sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1; + else + if ((u16) (sprite->data[1] - 0x40) > 0x83) + sprite->subpriority = 0x1D; + else + sprite->subpriority = 0x1F; + + if (++sprite->data[2] > 0x14) + sprite->invisible ^= 1; + + if (sprite->data[2] == 0x1E) + DestroyAnimSprite(sprite); +} + +// void sub_80D5DDC(struct Sprite *sprite) +// { + +// } \ No newline at end of file -- cgit v1.2.3 From 344b8bffbb969cca8b1c23ddf994c0c8ec6fe1f8 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sat, 6 Jan 2018 22:41:38 +0100 Subject: Finished decompiling wisp_fire --- asm/wisp_fire.s | 534 -------------------------------------------- ld_script.txt | 1 - src/battle/anim/wisp_fire.c | 160 ++++++++++++- 3 files changed, 154 insertions(+), 541 deletions(-) delete mode 100755 asm/wisp_fire.s diff --git a/asm/wisp_fire.s b/asm/wisp_fire.s deleted file mode 100755 index 5fc7a07ab..000000000 --- a/asm/wisp_fire.s +++ /dev/null @@ -1,534 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ wisp_fire - - thumb_func_start sub_80D5DDC -sub_80D5DDC: @ 80D5DDC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080D5E3C @ =gTasks - adds r4, r1, r0 - ldr r0, _080D5E40 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - movs r2, 0x1 - negs r2, r2 - adds r1, r2, 0 - cmp r0, 0 - bne _080D5E02 - movs r1, 0x1 -_080D5E02: - strh r1, [r4, 0x20] - ldr r0, _080D5E44 @ =gAnimBankTarget - ldrb r1, [r0] - movs r0, 0x2 - eors r0, r1 - bl IsAnimBankSpriteVisible - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - strh r0, [r4, 0x22] - movs r0, 0x1 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - movs r0, 0x3 - bl GetAnimBankSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080D5E48 @ =sub_80D5E4C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D5E3C: .4byte gTasks -_080D5E40: .4byte gAnimBankAttacker -_080D5E44: .4byte gAnimBankTarget -_080D5E48: .4byte sub_80D5E4C - thumb_func_end sub_80D5DDC - - thumb_func_start sub_80D5E4C -sub_80D5E4C: @ 80D5E4C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D5E70 @ =gTasks - adds r2, r0, r1 - movs r0, 0x8 - ldrsh r3, [r2, r0] - cmp r3, 0x1 - beq _080D5F14 - cmp r3, 0x1 - bgt _080D5E74 - cmp r3, 0 - beq _080D5E82 - b _080D6074 - .align 2, 0 -_080D5E70: .4byte gTasks -_080D5E74: - cmp r3, 0x2 - bne _080D5E7A - b _080D5F9C -_080D5E7A: - cmp r3, 0x3 - bne _080D5E80 - b _080D6030 -_080D5E80: - b _080D6074 -_080D5E82: - movs r1, 0x20 - ldrsh r0, [r2, r1] - lsls r0, 1 - ldrh r5, [r2, 0x1C] - adds r0, r5 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D5EB4 - strh r3, [r2, 0xA] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D5EB0 - movs r0, 0x2 - b _080D5EB2 -_080D5EB0: - ldr r0, _080D5F0C @ =0x0000fffe -_080D5EB2: - strh r0, [r2, 0x1E] -_080D5EB4: - movs r1, 0 - strh r1, [r2, 0xE] - movs r7, 0x22 - ldrsh r0, [r2, r7] - cmp r1, r0 - bge _080D5EF6 - ldr r4, _080D5F10 @ =gSprites - adds r3, r2, 0 - adds r3, 0x8 -_080D5EC6: - movs r1, 0xE - ldrsh r0, [r2, r1] - adds r0, 0xE - lsls r0, 1 - adds r0, r3, r0 - movs r5, 0 - ldrsh r0, [r0, r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r2, 0x1E] - ldrh r7, [r2, 0x1C] - adds r0, r7 - strh r0, [r1, 0x24] - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r5, 0x22 - ldrsh r1, [r2, r5] - cmp r0, r1 - blt _080D5EC6 -_080D5EF6: - ldrh r0, [r2, 0x1A] - adds r0, 0x1 - strh r0, [r2, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - beq _080D5F06 - b _080D6074 -_080D5F06: - movs r0, 0 - strh r0, [r2, 0x1A] - b _080D6020 - .align 2, 0 -_080D5F0C: .4byte 0x0000fffe -_080D5F10: .4byte gSprites -_080D5F14: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080D5F3C - movs r0, 0 - strh r0, [r2, 0xA] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - ands r0, r3 - lsls r0, 16 - cmp r0, 0 - beq _080D5F38 - movs r0, 0x2 - b _080D5F3A -_080D5F38: - ldr r0, _080D5F94 @ =0x0000fffe -_080D5F3A: - strh r0, [r2, 0x1E] -_080D5F3C: - movs r1, 0 - strh r1, [r2, 0xE] - movs r7, 0x22 - ldrsh r0, [r2, r7] - cmp r1, r0 - bge _080D5F7E - ldr r4, _080D5F98 @ =gSprites - adds r3, r2, 0 - adds r3, 0x8 -_080D5F4E: - movs r1, 0xE - ldrsh r0, [r2, r1] - adds r0, 0xE - lsls r0, 1 - adds r0, r3, r0 - movs r5, 0 - ldrsh r0, [r0, r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r2, 0x1E] - ldrh r7, [r2, 0x1C] - adds r0, r7 - strh r0, [r1, 0x24] - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r5, 0x22 - ldrsh r1, [r2, r5] - cmp r0, r1 - blt _080D5F4E -_080D5F7E: - ldrh r0, [r2, 0x1A] - adds r0, 0x1 - strh r0, [r2, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x60 - bne _080D6074 - movs r0, 0 - strh r0, [r2, 0x1A] - b _080D6020 - .align 2, 0 -_080D5F94: .4byte 0x0000fffe -_080D5F98: .4byte gSprites -_080D5F9C: - movs r7, 0x20 - ldrsh r1, [r2, r7] - lsls r1, 1 - ldrh r0, [r2, 0x1C] - subs r0, r1 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D5FD0 - movs r0, 0 - strh r0, [r2, 0xA] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D5FCC - strh r3, [r2, 0x1E] - b _080D5FD0 -_080D5FCC: - ldr r0, _080D6028 @ =0x0000fffe - strh r0, [r2, 0x1E] -_080D5FD0: - movs r1, 0 - strh r1, [r2, 0xE] - movs r3, 0x22 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _080D6012 - ldr r4, _080D602C @ =gSprites - adds r3, r2, 0 - adds r3, 0x8 -_080D5FE2: - movs r5, 0xE - ldrsh r0, [r2, r5] - adds r0, 0xE - lsls r0, 1 - adds r0, r3, r0 - movs r7, 0 - ldrsh r0, [r0, r7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r2, 0x1E] - ldrh r5, [r2, 0x1C] - adds r0, r5 - strh r0, [r1, 0x24] - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r7, 0x22 - ldrsh r1, [r2, r7] - cmp r0, r1 - blt _080D5FE2 -_080D6012: - ldrh r0, [r2, 0x1A] - adds r0, 0x1 - strh r0, [r2, 0x1A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - bne _080D6074 -_080D6020: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080D6074 - .align 2, 0 -_080D6028: .4byte 0x0000fffe -_080D602C: .4byte gSprites -_080D6030: - movs r1, 0 - strh r1, [r2, 0xE] - movs r3, 0x22 - ldrsh r0, [r2, r3] - cmp r1, r0 - bge _080D606E - ldr r6, _080D607C @ =gSprites - adds r3, r2, 0 - adds r3, 0x8 - movs r5, 0 -_080D6044: - movs r7, 0xE - ldrsh r0, [r2, r7] - adds r0, 0xE - lsls r0, 1 - adds r0, r3, r0 - movs r7, 0 - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strh r5, [r0, 0x24] - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r7, 0x22 - ldrsh r1, [r2, r7] - cmp r0, r1 - blt _080D6044 -_080D606E: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D6074: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D607C: .4byte gSprites - thumb_func_end sub_80D5E4C - - thumb_func_start sub_80D6080 -sub_80D6080: @ 80D6080 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r0, sp - bl sub_8078914 - mov r0, sp - ldrb r0, [r0, 0x8] - lsls r0, 4 - ldr r1, _080D60B0 @ =gBattleAnimArgs - ldrb r2, [r1] - ldrh r3, [r1, 0x2] - movs r1, 0x10 - bl BlendPalette - adds r0, r4, 0 - bl DestroyAnimVisualTask - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D60B0: .4byte gBattleAnimArgs - thumb_func_end sub_80D6080 - - thumb_func_start sub_80D60B4 -sub_80D60B4: @ 80D60B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _080D610C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r2, r0, r1 - movs r3, 0x8 - ldrsh r0, [r2, r3] - mov r9, r1 - ldr r4, _080D6110 @ =gBattleAnimArgs - mov r8, r4 - cmp r0, 0 - bne _080D60EA - ldrh r0, [r4] - strh r0, [r2, 0xA] - ldrh r0, [r4, 0x2] - strh r0, [r2, 0xC] - ldrh r0, [r4, 0x4] - strh r0, [r2, 0xE] - ldrh r0, [r4, 0x6] - strh r0, [r2, 0x10] -_080D60EA: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - ldr r1, _080D6114 @ =gObjectBankIDs - ldr r0, _080D6118 @ =gAnimBankTarget - ldrb r0, [r0] - adds r0, r1 - ldrb r6, [r0] - movs r5, 0x10 - ldrsh r0, [r2, r5] - cmp r0, 0 - bne _080D6120 - ldr r4, _080D611C @ =gUnknown_083D9794 - movs r1, 0x8 - ldrsh r0, [r2, r1] - b _080D6126 - .align 2, 0 -_080D610C: .4byte gTasks -_080D6110: .4byte gBattleAnimArgs -_080D6114: .4byte gObjectBankIDs -_080D6118: .4byte gAnimBankTarget -_080D611C: .4byte gUnknown_083D9794 -_080D6120: - ldr r4, _080D616C @ =gUnknown_083D97A4 - movs r3, 0x8 - ldrsh r0, [r2, r3] -_080D6126: - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - adds r0, r4 - ldrb r5, [r0] - lsls r0, r7, 2 - adds r1, r0, r7 - lsls r1, 3 - add r1, r9 - movs r4, 0xE - ldrsh r1, [r1, r4] - mov r12, r0 - cmp r1, 0x1 - bne _080D6174 - ldr r2, _080D6170 @ =gSprites - lsls r3, r6, 4 - adds r0, r3, r6 - lsls r0, 2 - adds r0, r2 - mov r10, r0 - mov r0, r8 - movs r4, 0x2 - ldrsh r1, [r0, r4] - lsls r0, r5, 24 - asrs r0, 24 - muls r0, r1 - cmp r0, 0 - bge _080D6164 - negs r0, r0 -_080D6164: - mov r5, r10 - strh r0, [r5, 0x26] - b _080D618E - .align 2, 0 -_080D616C: .4byte gUnknown_083D97A4 -_080D6170: .4byte gSprites -_080D6174: - ldr r3, _080D61C4 @ =gSprites - lsls r4, r6, 4 - adds r2, r4, r6 - lsls r2, 2 - adds r2, r3 - lsls r0, r5, 24 - asrs r0, 24 - mov r5, r8 - ldrh r1, [r5, 0x2] - muls r0, r1 - strh r0, [r2, 0x24] - adds r2, r3, 0 - adds r3, r4, 0 -_080D618E: - mov r1, r12 - adds r0, r1, r7 - lsls r0, 3 - add r0, r9 - movs r4, 0x8 - ldrsh r1, [r0, r4] - movs r5, 0xA - ldrsh r0, [r0, r5] - cmp r1, r0 - bne _080D61B4 - adds r0, r3, r6 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - strh r1, [r0, 0x26] - adds r0, r7, 0 - bl DestroyAnimVisualTask -_080D61B4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D61C4: .4byte gSprites - thumb_func_end sub_80D60B4 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 125d288cf..3af44e1c6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -284,7 +284,6 @@ SECTIONS { src/battle/anim/heated_rock.o(.text); src/battle/anim/wisp_orb.o(.text); src/battle/anim/wisp_fire.o(.text); - asm/wisp_fire.o(.text); src/battle/anim/thunder.o(.text); src/battle/anim/beta_beat_up.o(.text); src/battle/anim/shock.o(.text); diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c index e31c15d9c..348ce6426 100644 --- a/src/battle/anim/wisp_fire.c +++ b/src/battle/anim/wisp_fire.c @@ -1,12 +1,20 @@ #include "global.h" #include "battle_anim.h" +#include "blend_palette.h" #include "main.h" #include "rom_8077ABC.h" +#include "task.h" #include "trig.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankTarget; -// extern u8 gAnimBankAttacker; +extern u8 gAnimBankAttacker; + +extern u8 gObjectBankIDs[]; +extern s8 gUnknown_083D9794[16]; +extern s8 gUnknown_083D97A4[16]; + +void sub_80D5E4C(u8 taskId); void sub_80D5CC0(struct Sprite *sprite) { @@ -25,15 +33,19 @@ void sub_80D5CC0(struct Sprite *sprite) sprite->data[1] = (sprite->data[1] + 7) & 0xFF; if (gMain.inBattle) - if ((u16) (sprite->data[1] - 0x40) > 0x83) + { + if (sprite->data[1] < 64 || sprite->data[1] > 195) sprite->oam.priority = sub_8079ED4(gAnimBankTarget); else sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1; + } else - if ((u16) (sprite->data[1] - 0x40) > 0x83) + { + if (sprite->data[1] < 64 || sprite->data[1] > 195) sprite->subpriority = 0x1D; else sprite->subpriority = 0x1F; + } if (++sprite->data[2] > 0x14) sprite->invisible ^= 1; @@ -42,7 +54,143 @@ void sub_80D5CC0(struct Sprite *sprite) DestroyAnimSprite(sprite); } -// void sub_80D5DDC(struct Sprite *sprite) -// { +void sub_80D5DDC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[12] = !GetBankSide(gAnimBankAttacker) ? 1 : -1; + task->data[13] = IsAnimBankSpriteVisible(gAnimBankTarget ^ 2) + 1; + task->data[14] = GetAnimBankSpriteId(1); + task->data[15] = GetAnimBankSpriteId(3); + + task->func = sub_80D5E4C; +} + +void sub_80D5E4C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[10] += task->data[12] * 2; + if (++task->data[1] >= 2) + { + task->data[1] = 0; + task->data[2]++; + if (task->data[2] & 1) + task->data[11] = 2; + else + task->data[11] = -2; + } + + for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++) + { + gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11]; + } + + if (++task->data[9] == 16) + { + task->data[9] = 0; + task->data[0]++; + } + break; + case 1: + if (++task->data[1] >= 5) + { + task->data[1] = 0; + task->data[2]++; + + if (task->data[2] & 1) + task->data[11] = 2; + else + task->data[11] = -2; + } + + for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++) + { + gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11]; + } + + if (++task->data[9] == 96) + { + task->data[9] = 0; + task->data[0]++; + } + break; + case 2: + task->data[10] -= task->data[12] * 2; + + if (++task->data[1] >= 2) + { + task->data[1] = 0; + task->data[2]++; + + if (task->data[2] & 1) + task->data[11] = 2; + else + task->data[11] = -2; + } -// } \ No newline at end of file + for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++) + { + gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11]; + } + + if (++task->data[9] == 16) + { + task->data[0]++; + } + break; + case 3: + for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++) + { + gSprites[task->data[task->data[3] + 14]].pos2.x = 0; + } + + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80D6080(u8 taskId) +{ + struct Struct_sub_8078914 unk; + sub_8078914(&unk); + BlendPalette(unk.field_8 << 4, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); // u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor + DestroyAnimVisualTask(taskId); +} + +void sub_80D60B4(u8 taskId) +{ + s8 unk; + u8 spriteId; + + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + gTasks[taskId].data[4] = gBattleAnimArgs[3]; + } + gTasks[taskId].data[0]++; + + spriteId = gObjectBankIDs[gAnimBankTarget]; + + if (!gTasks[taskId].data[4]) + unk = gUnknown_083D9794[gTasks[taskId].data[0] % 10]; + else + unk = gUnknown_083D97A4[gTasks[taskId].data[0] % 10]; + + if (gTasks[taskId].data[3] == 1) + gSprites[spriteId].pos2.y = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk; + else + gSprites[spriteId].pos2.x = gBattleAnimArgs[1] * unk; + + if (gTasks[taskId].data[0] == gTasks[taskId].data[1]) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } +} \ No newline at end of file -- cgit v1.2.3 From d4df8046d45e50e19d2305bd4388e47087949960 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 6 Jan 2018 21:52:05 -0500 Subject: use firered isagbprint.h and NDEBUG --- include/assert.h | 43 ----------------------------------------- include/config.h | 4 ++-- include/gba/gba.h | 1 + include/gba/isagbprint.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ include/global.h | 3 +-- src/engine/main.c | 4 ++-- src/libs/libisagbprn.c | 2 +- 7 files changed, 57 insertions(+), 50 deletions(-) delete mode 100755 include/assert.h create mode 100755 include/gba/isagbprint.h diff --git a/include/assert.h b/include/assert.h deleted file mode 100755 index 0c1e5bf77..000000000 --- a/include/assert.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef GUARD_GBASDKASSERT_H -#define GUARD_GBASDKASSERT_H - -// this header is based on the -// GBA SDK IsAgbAssert.h. - -#ifdef NOAGBPRN - #define AGBPrintInit() - #define AGBPutc(pBuf) - #define AGBPrint(pBuf) - #define AGBPrintf(...) - #define AGBPrintFlush1Block() - #define AGBPrintFlush() - #define AGBAssert(pFile, nLine, pExpression, nStopProgram) -#else - // without NOAGBPRN defined, this enables asserts for usage - // on a standard GBA debugger unit or in emulators that - // support it. - - void AGBPrintInit(void); - void AGBPutc(const char pBuf); - void AGBPrint(const char *pBuf); - void AGBPrintf(const char *pBuf, ...); - void AGBPrintFlush1Block(void); - void AGBPrintFlush(void); - void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); -#endif - -// when using AGB_WARNING, be sure to flush after as AGBAssert does not flush the string to console -// immediately after usage. -#ifdef NOAGBPRN - #define AGB_ASSERT(expression) -#else - #define AGB_ASSERT(expression) (expression) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #expression, 1); -#endif - -#ifdef NOAGBPRN - #define AGB_WARNING(expression) -#else - #define AGB_WARNING(expression) (expression) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #expression, 0); -#endif - -#endif diff --git a/include/config.h b/include/config.h index d9ed70a7c..7661324db 100644 --- a/include/config.h +++ b/include/config.h @@ -4,7 +4,7 @@ // In the Generation 3 games, Asserts were used in various debug builds. // Ruby/Sapphire and Emerald do not have these asserts while Fire Red // still has them in the ROM. This is because the developers forgot -// to define NOAGBPRN before release, which is actually supposed to be +// to define NDEBUG before release, which is actually supposed to be // NDEBUG, however this has been changed as Ruby's actual debug build // does not use the AGBPrint features. @@ -15,7 +15,7 @@ // authoritative. These additions are for user convenience based on // officially recommended SDK practices for debugging and is therefore // still in part authoritative. -#define NOAGBPRN +#define NDEBUG #ifndef REVISION #define REVISION 0 diff --git a/include/gba/gba.h b/include/gba/gba.h index 42ae3cdde..349344031 100644 --- a/include/gba/gba.h +++ b/include/gba/gba.h @@ -7,5 +7,6 @@ #include "gba/multiboot.h" #include "gba/syscall.h" #include "gba/macro.h" +#include "gba/isagbprint.h" #endif // GUARD_GBA_GBA_H diff --git a/include/gba/isagbprint.h b/include/gba/isagbprint.h new file mode 100755 index 000000000..c5eb456c3 --- /dev/null +++ b/include/gba/isagbprint.h @@ -0,0 +1,50 @@ +#ifndef GUARD_GBA_ISAGBPRINT_H +#define GUARD_GBA_ISAGBPRINT_H + +#ifdef NDEBUG +#define AGBPrintInit() +#define AGBPutc(cChr) +#define AGBPrint(pBuf) +#define AGBPrintf(pBuf, ...) +#define AGBPrintFlush1Block() +#define AGBPrintFlush() +#define AGBAssert(pFile, nLine, pExpression, nStopProgram) +#else +void AGBPrintInit(void); +void AGBPutc(const char cChr); +void AGBPrint(const char *pBuf); +void AGBPrintf(const char *pBuf, ...); +void AGBPrintFlush1Block(void); +void AGBPrintFlush(void); +void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); +#endif + +#undef AGB_ASSERT +#ifdef NDEBUG +#define AGB_ASSERT(exp) +#else +#define AGB_ASSERT(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 1); +#endif + +#undef AGB_WARNING +#ifdef NDEBUG +#define AGB_WARNING(exp) +#else +#define AGB_WARNING(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 0); +#endif + +// for matching purposes + +#ifdef NDEBUG +#define AGB_ASSERT_EX(exp, file, line) +#else +#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 1); +#endif + +#ifdef NDEBUG +#define AGB_WARNING_EX(exp, file, line) +#else +#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 0); +#endif + +#endif // GUARD_GBA_ISAGBPRINT_H diff --git a/include/global.h b/include/global.h index 4c118db13..d0af4a4d1 100644 --- a/include/global.h +++ b/include/global.h @@ -1,9 +1,8 @@ #ifndef GUARD_GLOBAL_H #define GUARD_GLOBAL_H +#include "config.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines. #include "gba/gba.h" -#include "config.h" -#include "assert.h" // IDE support #if defined(__APPLE__) || defined(__CYGWIN__) diff --git a/src/engine/main.c b/src/engine/main.c index e52551f72..92b81d475 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -83,7 +83,7 @@ static void WaitForVBlank(void); #define B_START_SELECT (B_BUTTON | START_BUTTON | SELECT_BUTTON) -#ifndef NOAGBPRN +#ifndef NDEBUG #include // don't include if not needed. #endif @@ -105,7 +105,7 @@ void AgbMain() // In Fire Red, AGBPrintInit is called at this spot. For user convenience, I // opt to initialize the print area here. It is up to the user where they choose // to print stuff from, as anything else declared is NOT authoritative. -#ifndef NOAGBPRN +#ifndef NDEBUG AGBPrintInit(); __mb_cur_max = 1; // fix for AGBPrintf #endif diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 867044217..eccc31f48 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -25,7 +25,7 @@ struct AGBPrintStruct typedef void (*LPFN_PRINT_FLUSH)(void); -#ifndef NOAGBPRN +#ifndef NDEBUG void AGBPrintFlush1Block(void); void AGBPrintInit(void) -- cgit v1.2.3 From 897107d1eae649e71213539aba7146fe2b2e2e70 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 7 Jan 2018 23:45:53 -0500 Subject: NDEBUG which is supposed to be NDEBUG... --- include/config.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/config.h b/include/config.h index 7661324db..6d9e15a15 100644 --- a/include/config.h +++ b/include/config.h @@ -4,9 +4,8 @@ // In the Generation 3 games, Asserts were used in various debug builds. // Ruby/Sapphire and Emerald do not have these asserts while Fire Red // still has them in the ROM. This is because the developers forgot -// to define NDEBUG before release, which is actually supposed to be -// NDEBUG, however this has been changed as Ruby's actual debug build -// does not use the AGBPrint features. +// to define NDEBUG before release, however this has been changed as +// Ruby's actual debug build does not use the AGBPrint features. // To note, Ruby/Sapphire likely did not use AGBPrint. This is because // the german debug ROM of Ruby did not have any uses of AGBPrint and -- cgit v1.2.3 From a289caaf97cddbf212fc860013b8815323a84921 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 8 Jan 2018 17:03:06 -0500 Subject: let the user deal with nogbaprint, forget this --- src/libs/libisagbprn.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index eccc31f48..c066a41a0 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -2,16 +2,14 @@ #include #include "gba/gba.h" #include "config.h" -#include "assert.h" #define AGB_PRINT_FLUSH_ADDR 0x9FE209D #define AGB_PRINT_STRUCT_ADDR 0x9FE20F8 #define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE #define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) -// TODO: make no$gba support not shit - // for auto no$gba support, the string "no$gba" should be at this address. +// except it's not, blame Martin, hence I'm letting the user deal with this nonsense. #define NOGBAIDADDR 0x4FFFA00 #define NOGBAPRINTADDR 0x4FFFA14 @@ -26,6 +24,7 @@ struct AGBPrintStruct typedef void (*LPFN_PRINT_FLUSH)(void); #ifndef NDEBUG + void AGBPrintFlush1Block(void); void AGBPrintInit(void) @@ -156,12 +155,12 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP } } -// TODO: Find a way to seamlessly support no$gba without shit hack defines -// nogba print function +// nogba print function, uncomment to use /* void NOGBAPrint(const char *pBuf) { *(volatile u32*)NOGBAPRINTADDR = (u32)pBuf; -}*/ +} +*/ #endif -- cgit v1.2.3 From 1c6c7da6fba8903d8eff02ac12465a4098ebca47 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 8 Jan 2018 21:40:37 -0500 Subject: nogba to nocashgba --- Makefile | 2 -- src/libs/libisagbprn.c | 10 +++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 8ca249dc7..9aff29fc4 100644 --- a/Makefile +++ b/Makefile @@ -16,8 +16,6 @@ OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy LIBGCC := tools/agbcc/lib/libgcc.a LIBC := tools/agbcc/lib/libc.a -LIBC := tools/agbcc/lib/libc.a - SHA1 := sha1sum -c GFX := tools/gbagfx/gbagfx diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index c066a41a0..007f90bb7 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -10,8 +10,8 @@ // for auto no$gba support, the string "no$gba" should be at this address. // except it's not, blame Martin, hence I'm letting the user deal with this nonsense. -#define NOGBAIDADDR 0x4FFFA00 -#define NOGBAPRINTADDR 0x4FFFA14 +#define NOCASHGBAIDADDR 0x4FFFA00 +#define NOCASHGBAPRINTADDR 0x4FFFA14 struct AGBPrintStruct { @@ -155,11 +155,11 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP } } -// nogba print function, uncomment to use +// no$gba print function, uncomment to use /* -void NOGBAPrint(const char *pBuf) +void NoCashGBAPrint(const char *pBuf) { - *(volatile u32*)NOGBAPRINTADDR = (u32)pBuf; + *(volatile u32*)NOCASHGBAPRINTADDR = (u32)pBuf; } */ -- cgit v1.2.3 From dcf12f9ecdbaab26afb8899eaa05f4cab09a5f82 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 8 Jan 2018 22:01:47 -0500 Subject: nocashgba printf --- include/config.h | 7 +++++++ src/libs/libisagbprn.c | 12 +++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/include/config.h b/include/config.h index 6d9e15a15..796da359c 100644 --- a/include/config.h +++ b/include/config.h @@ -16,6 +16,13 @@ // still in part authoritative. #define NDEBUG +// To enable print debugging, comment out "#define NDEBUG". This allows +// the various AGBPrint functions to be used. (See include/gba/isagbprint.h). +// Some emulators support a debug console window: uncomment NoCashGBAPrint() +// and NoCashGBAPrintf() in libisagbprn.c to use no$gba's own proprietary +// printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you +// would normally use AGBPrint() and AGBPrintf(). + #ifndef REVISION #define REVISION 0 #endif diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 007f90bb7..a9656f3c5 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -155,12 +155,22 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP } } -// no$gba print function, uncomment to use +// no$gba print functions, uncomment to use /* void NoCashGBAPrint(const char *pBuf) { *(volatile u32*)NOCASHGBAPRINTADDR = (u32)pBuf; } + +void NoCashGBAPrintf(const char *pBuf, ...) +{ + char bufPrint[0x100]; + va_list vArgv; + va_start(vArgv, pBuf); + vsprintf(bufPrint, pBuf, vArgv); + va_end(vArgv); + NoCashGBAPrint(bufPrint); +} */ #endif -- cgit v1.2.3 From 6d16dba22e9ea2b40bf684f7549b73a583d143f6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 8 Jan 2018 23:16:13 -0600 Subject: re-label some window and text code --- asm/battle_1.s | 20 +- asm/battle_anim_81258BC.s | 4 +- asm/contest_link_80C2020.s | 6 +- asm/pokemon_storage_system.s | 62 +-- asm/pokenav.s | 34 +- data/graphics.s | 2 +- include/menu.h | 42 +- include/text.h | 164 +++---- include/text_window.h | 22 +- src/battle/battle_2.c | 14 +- src/battle/battle_4.c | 12 +- src/battle/battle_controller_linkopponent.c | 2 +- src/battle/battle_controller_linkpartner.c | 2 +- src/battle/battle_controller_opponent.c | 2 +- src/battle/battle_controller_player.c | 42 +- src/battle/battle_controller_safari.c | 10 +- src/battle/battle_controller_wally.c | 12 +- src/battle/battle_party_menu.c | 6 +- src/battle/battle_records.c | 32 +- src/battle/reshow_battle_screen.c | 2 +- src/contest.c | 88 ++-- src/debug/matsuda_debug_menu.c | 44 +- src/debug/mori_debug_menu.c | 12 +- src/debug/sound_check_menu.c | 80 ++-- src/debug/unknown_debug_menu.c | 6 +- src/easy_chat_1.c | 16 +- src/easy_chat_2.c | 24 +- src/engine/cable_club.c | 6 +- src/engine/clear_save_data_menu.c | 6 +- src/engine/link.c | 6 +- src/engine/main_menu.c | 94 ++-- src/engine/menu.c | 150 +++--- src/engine/mystery_event_menu.c | 32 +- src/engine/naming_screen.c | 14 +- src/engine/option_menu.c | 34 +- src/engine/record_mixing.c | 10 +- src/engine/reset_rtc_screen.c | 22 +- src/engine/save_failed_screen.c | 32 +- src/engine/save_menu_util.c | 18 +- src/engine/text.c | 707 +++++++++++++++------------- src/engine/text_window.c | 157 +++--- src/engine/trade.c | 118 ++--- src/engine/trainer_card.c | 28 +- src/field/berry_tag_screen.c | 24 +- src/field/braille_puzzles.c | 4 +- src/field/choose_party.c | 28 +- src/field/coins.c | 6 +- src/field/daycare.c | 12 +- src/field/decoration.c | 76 +-- src/field/diploma.c | 2 +- src/field/field_message_box.c | 20 +- src/field/field_player_avatar.c | 18 +- src/field/field_region_map.c | 10 +- src/field/field_screen_effect.c | 4 +- src/field/field_specials.c | 54 +-- src/field/fldeff_softboiled.c | 4 +- src/field/item_menu.c | 96 ++-- src/field/item_use.c | 18 +- src/field/map_name_popup.c | 8 +- src/field/mauville_man.c | 22 +- src/field/menu_helpers.c | 8 +- src/field/money.c | 6 +- src/field/party_menu.c | 74 +-- src/field/player_pc.c | 130 ++--- src/field/pokeblock.c | 42 +- src/field/region_map.c | 18 +- src/field/scrcmd.c | 8 +- src/field/script_menu.c | 58 +-- src/field/secret_base.c | 44 +- src/field/shop.c | 36 +- src/field/slot_machine.c | 16 +- src/field/start_menu.c | 32 +- src/field/starter_choose.c | 24 +- src/field/trader.c | 20 +- src/field/use_pokeblock.c | 22 +- src/field/wallclock.c | 10 +- src/pokemon/learn_move.c | 62 +-- src/pokemon/mail.c | 6 +- src/pokemon/mon_markings.c | 2 +- src/pokemon/pokeblock_feed.c | 4 +- src/pokemon/pokedex.c | 56 +-- src/pokemon/pokemon_menu.c | 44 +- src/pokemon/pokemon_storage_system.c | 4 +- src/pokemon/pokemon_summary_screen.c | 142 +++--- src/pokenav_before.c | 24 +- src/rom_800D42C.c | 4 +- src/roulette.c | 68 +-- src/scene/berry_blender.c | 92 ++-- src/scene/credits.c | 2 +- src/scene/egg_hatch.c | 14 +- src/scene/evolution_scene.c | 84 ++-- src/scene/hall_of_fame.c | 40 +- src/script_pokemon_util_80C4BF0.c | 4 +- 93 files changed, 1940 insertions(+), 1862 deletions(-) diff --git a/asm/battle_1.s b/asm/battle_1.s index f0a883ec4..da604c6b6 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -448,16 +448,16 @@ _0800D748: .4byte 0x0000bf40 sub_800D74C: @ 800D74C push {r4,lr} movs r0, 0x12 - bl SetTextWindowBaseTileNum + bl TextWindow_SetBaseTileNum ldr r4, _0800D79C @ =gUnknown_03004210 adds r0, r4, 0 movs r1, 0x1 - bl LoadTextWindowGraphics_OverridePalSlot + bl TextWindow_LoadStdFrameGraphicsOverridePal movs r0, 0x22 - bl SetTextWindowBaseTileNum + bl TextWindow_SetBaseTileNum adds r0, r4, 0 movs r1, 0x1 - bl LoadTextWindowGraphics_OverridePalSlot + bl TextWindow_LoadStdFrameGraphicsOverridePal ldr r3, _0800D7A0 @ =gPlttBufferUnfaded adds r0, r3, 0 adds r0, 0xB8 @@ -1055,9 +1055,9 @@ _0800DE88: str r0, [sp, 0x4] adds r0, r1, 0 adds r1, r7, 0 - bl sub_8002E4C + bl Text_InitWindow8002E4C ldr r0, [sp, 0xC] - bl sub_8002F44 + bl Text_PrintWindow8002F44 ldr r2, _0800DEDC @ =gUnknown_081F9680 + 0x8 adds r4, r2 ldr r2, [r4] @@ -1111,9 +1111,9 @@ _0800DF04: movs r5, 0x1 str r5, [sp, 0x4] adds r0, r4, 0 - bl sub_8002E4C + bl Text_InitWindow8002E4C adds r0, r4, 0 - bl sub_8002F44 + bl Text_PrintWindow8002F44 mov r0, r8 ldr r2, [r0, 0x38] mov r0, r9 @@ -1134,9 +1134,9 @@ _0800DF04: str r0, [sp] str r5, [sp, 0x4] adds r0, r4, 0 - bl sub_8002E4C + bl Text_InitWindow8002E4C adds r0, r4, 0 - bl sub_8002F44 + bl Text_PrintWindow8002F44 mov r5, r8 ldr r2, [r5, 0x44] mov r0, r9 diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s index 2c19ad731..c13faaa77 100644 --- a/asm/battle_anim_81258BC.s +++ b/asm/battle_anim_81258BC.s @@ -49,11 +49,11 @@ sub_812AF10: @ 812AF10 movs r1, 0xE movs r2, 0x1B movs r3, 0x13 - bl MenuDrawTextWindow + bl Menu_DrawStdWindowFrame ldr r0, _0812AF2C @ =gStringVar4 movs r1, 0x3 movs r2, 0xF - bl MenuPrint + bl Menu_PrintText pop {r0} bx r0 .align 2, 0 diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 608daba87..096ce91e7 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -17,7 +17,7 @@ sub_80C2020: @ 80C2020 bl SetUpWindowConfig ldr r0, _080C20F4 @ =gMenuWindow adds r1, r4, 0 - bl InitWindowFromConfig + bl Text_InitWindowWithTemplate ldr r1, _080C20F8 @ =REG_BG0CNT movs r2, 0xF8 lsls r2, 6 @@ -357,7 +357,7 @@ _080C230A: lsrs r3, 24 str r3, [sp] movs r3, 0x7 - bl sub_8003460 + bl Text_InitWindowAndPrintText add sp, 0x4 pop {r4-r7} pop {r0} @@ -2194,7 +2194,7 @@ _080C31CE: bge _080C31CE mov r0, r8 mov r1, r9 - bl GetStringWidthGivenWindowConfig + bl Text_GetStringWidthFromWindowTemplate lsls r0, 24 lsrs r5, r0, 24 ldr r2, _080C32D4 @ =gDisplayedStringBattle diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 69c6d9e4f..2954c0b09 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -539,7 +539,7 @@ StorageSystemClearMessageWindow: @ 8095EA0 movs r1, 0xF movs r2, 0x1B movs r3, 0x12 - bl MenuFillWindowRectWithBlankTile + bl Menu_BlankWindowRect pop {r0} bx r0 thumb_func_end StorageSystemClearMessageWindow @@ -578,7 +578,7 @@ _08095EE0: _08095EF4: ldrb r0, [r4, 0xA] bl StorageSystemCreatePrimaryMenu - bl MenuDisplayMessageBox + bl Menu_DisplayDialogueFrame ldr r1, _08095F18 @ =gUnknown_083B600C movs r2, 0xA ldrsh r0, [r4, r2] @@ -588,7 +588,7 @@ _08095EF4: ldr r0, [r0] movs r1, 0x2 movs r2, 0xF - bl MenuPrint + bl Menu_PrintText b _08095F28 .align 2, 0 _08095F18: .4byte gUnknown_083B600C @@ -604,7 +604,7 @@ _08095F28: strh r0, [r4, 0x8] b _080960F4 _08095F30: - bl ProcessMenuInput + bl Menu_ProcessInput lsls r0, 24 asrs r0, 24 strh r0, [r4, 0xC] @@ -676,7 +676,7 @@ _08095FA2: ldr r0, [r1] movs r1, 0x2 movs r2, 0xF - bl MenuPrint + bl Menu_PrintText b _080960F4 .align 2, 0 _08095FC0: .4byte gMain @@ -687,7 +687,7 @@ _08095FC8: movs r1, 0 movs r2, 0xD movs r3, 0x9 - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect bl ScriptContext2_Disable bl EnableBothScriptContexts adds r0, r5, 0 @@ -723,7 +723,7 @@ _08096008: _08096022: movs r1, 0x2 movs r2, 0xF - bl MenuPrint + bl Menu_PrintText movs r0, 0x3 strh r0, [r4, 0x8] b _080960F4 @@ -760,8 +760,8 @@ _08096042: _0809606A: movs r0, 0x1 negs r0, r0 - bl MoveMenuCursor - bl GetMenuCursorPos + bl Menu_MoveCursor + bl Menu_GetCursorPos lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xA] @@ -788,8 +788,8 @@ _08096090: strh r2, [r4, 0xA] _080960A8: movs r0, 0x1 - bl MoveMenuCursor - bl GetMenuCursorPos + bl Menu_MoveCursor + bl Menu_GetCursorPos lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0xA] @@ -805,7 +805,7 @@ _080960C2: ldr r0, [r0] movs r1, 0x2 movs r2, 0xF - bl MenuPrint + bl Menu_PrintText movs r0, 0x2 strh r0, [r4, 0x8] b _080960F4 @@ -892,7 +892,7 @@ StorageSystemCreatePrimaryMenu: @ 8096168 movs r1, 0 movs r2, 0xD movs r3, 0x9 - bl MenuDrawTextWindow + bl Menu_DrawStdWindowFrame ldr r3, _080961A4 @ =gUnknown_083B600C movs r0, 0x1 movs r1, 0x1 @@ -1854,7 +1854,7 @@ _080968F0: .4byte gWindowConfig_81E6D00 _080968F4: ldr r0, _08096900 @ =gWindowConfig_81E6D00 bl InitMenuWindow - bl MenuZeroFillScreen + bl Menu_EraseScreen b _0809697A .align 2, 0 _08096900: .4byte gWindowConfig_81E6D00 @@ -1993,7 +1993,7 @@ _08096A3C: .4byte gWindowConfig_81E6D00 _08096A40: ldr r0, _08096A4C @ =gWindowConfig_81E6D00 bl InitMenuWindow - bl MenuZeroFillScreen + bl Menu_EraseScreen b _08096AD8 .align 2, 0 _08096A4C: .4byte gWindowConfig_81E6D00 @@ -3370,7 +3370,7 @@ _080975EC: adds r0, 0x1 strb r0, [r1, 0x4] _08097600: - bl ProcessMenuInputNoWrap + bl Menu_ProcessInputNoWrap lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -4113,7 +4113,7 @@ _08097C18: .align 2, 0 _08097C28: .4byte gMain _08097C2C: - bl ProcessMenuInputNoWrap + bl Menu_ProcessInputNoWrap lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -4247,7 +4247,7 @@ _08097D38: .align 2, 0 _08097D48: .4byte gMain _08097D4C: - bl ProcessMenuInputNoWrap + bl Menu_ProcessInputNoWrap lsls r0, 24 asrs r1, r0, 24 cmp r1, 0 @@ -4940,27 +4940,27 @@ _08098302: movs r1, 0xB movs r2, 0x9 movs r3, 0x11 - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect ldr r4, _0809834C @ =gSharedMem + 0x127A adds r0, r4, 0 movs r1, 0x1 movs r2, 0x10 - bl MenuPrint + bl Menu_PrintText adds r0, r4, 0 subs r0, 0x6B movs r1, 0x1 movs r2, 0xB - bl MenuPrint + bl Menu_PrintText adds r0, r4, 0 subs r0, 0x46 movs r1, 0 movs r2, 0xD - bl MenuPrint + bl Menu_PrintText subs r4, 0x21 adds r0, r4, 0 movs r1, 0x1 movs r2, 0xF - bl MenuPrint + bl Menu_PrintText pop {r4} pop {r0} bx r0 @@ -5657,7 +5657,7 @@ sub_8098A38: @ 8098A38 lsls r4, 24 asrs r4, 24 adds r0, r4, 0 - bl MoveMenuCursor + bl Menu_MoveCursor pop {r4} pop {r0} bx r0 @@ -5671,12 +5671,12 @@ sub_8098A5C: @ 8098A5C movs r1, 0x10 movs r2, 0x1D movs r3, 0x13 - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect movs r0, 0x17 movs r1, 0xA movs r2, 0x1D movs r3, 0xF - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect pop {r0} bx r0 thumb_func_end sub_8098A5C @@ -14483,7 +14483,7 @@ sub_809CE84: @ 809CE84 ldrb r1, [r6] movs r2, 0x1D movs r3, 0xF - bl MenuDrawTextWindow + bl Menu_DrawStdWindowFrame ldrb r0, [r5] adds r0, 0x1 lsls r0, 24 @@ -14559,7 +14559,7 @@ _0809CF52: bl PlaySE movs r0, 0x1 negs r0, r0 - bl MoveMenuCursor + bl Menu_MoveCursor b _0809CF8E .align 2, 0 _0809CF6C: .4byte gMain @@ -14571,10 +14571,10 @@ _0809CF70: movs r0, 0x5 bl PlaySE movs r0, 0x1 - bl MoveMenuCursor + bl Menu_MoveCursor b _0809CF8E _0809CF86: - bl GetMenuCursorPos + bl Menu_GetCursorPos lsls r0, 24 lsrs r5, r0, 24 _0809CF8E: @@ -14593,7 +14593,7 @@ _0809CF8E: ldrb r1, [r1] movs r2, 0x1D movs r3, 0xF - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect _0809CFB2: cmp r5, 0 blt _0809CFC4 diff --git a/asm/pokenav.s b/asm/pokenav.s index 83ceed00f..7db96ed0f 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -237,7 +237,7 @@ _080F07F4: adds r0, r1 movs r1, 0x1 movs r2, 0x6 - bl MenuPrint + bl Menu_PrintText _080F080A: pop {r0} bx r0 @@ -348,7 +348,7 @@ sub_80F08E4: @ 80F08E4 movs r1, 0x9 movs r2, 0xB movs r3, 0x10 - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect pop {r0} bx r0 .align 2, 0 @@ -376,7 +376,7 @@ sub_80F0900: @ 80F0900 movs r1, 0x1 movs r2, 0x1F movs r3, 0xF - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect _080F092A: ldrh r0, [r5] lsrs r2, r4, 16 @@ -533,7 +533,7 @@ _080F0A40: lsrs r2, 24 adds r0, r4, 0 movs r1, 0xD - bl MenuPrint + bl Menu_PrintText pop {r4,r5} pop {r0} bx r0 @@ -694,7 +694,7 @@ _080F0B60: adds r3, r1, 0x1 movs r0, 0xC movs r2, 0x1F - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect _080F0BAA: ldrh r0, [r6] cmp r0, 0 @@ -726,7 +726,7 @@ _080F0BE2: movs r0, 0xC adds r1, r4, 0 movs r2, 0x1F - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect adds r4, 0x2 movs r0, 0x1F ands r4, r0 @@ -1147,7 +1147,7 @@ _080F0F10: movs r0, 0xC adds r1, r4, 0 movs r2, 0x1F - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] @@ -1274,7 +1274,7 @@ sub_80F0FFC: @ 80F0FFC adds r0, r4, 0 movs r1, 0 movs r2, 0x5 - bl MenuPrint + bl Menu_PrintText pop {r4,r5} pop {r0} bx r0 @@ -1376,7 +1376,7 @@ _080F111C: _080F1126: b _080F1226 _080F1128: - bl MenuZeroFillScreen + bl Menu_EraseScreen b _080F1218 _080F112E: bl sub_80F1614 @@ -1761,7 +1761,7 @@ sub_80F1438: @ 80F1438 adds r0, r4, r1 movs r1, 0xD movs r2, 0x1 - bl MenuPrint + bl Menu_PrintText ldr r0, _080F1478 @ =0x00008788 adds r5, r4, r0 ldr r1, _080F147C @ =0x0000876e @@ -1775,7 +1775,7 @@ sub_80F1438: @ 80F1438 adds r0, r5, 0 movs r1, 0x1 movs r2, 0x5 - bl MenuPrint + bl Menu_PrintText pop {r4,r5} pop {r0} bx r0 @@ -1793,7 +1793,7 @@ sub_80F1480: @ 80F1480 movs r1, 0xD movs r2, 0x1B movs r3, 0x10 - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect pop {r0} bx r0 thumb_func_end sub_80F1480 @@ -1914,11 +1914,11 @@ _080F158A: adds r0, r6, 0 movs r1, 0xC movs r2, 0xD - bl MenuPrint + bl Menu_PrintText adds r0, r7, 0 movs r1, 0xC movs r2, 0xF - bl MenuPrint + bl Menu_PrintText pop {r4-r7} pop {r0} bx r0 @@ -1933,7 +1933,7 @@ sub_80F15A8: @ 80F15A8 movs r1, 0xD movs r2, 0x1B movs r3, 0x10 - bl MenuZeroFillWindowRect + bl Menu_EraseWindowRect ldr r0, _080F1600 @ =gUnknown_083DFEC4 ldr r4, [r0] ldr r0, _080F1604 @ =0x00008788 @@ -1964,7 +1964,7 @@ sub_80F15A8: @ 80F15A8 adds r0, r5, 0 movs r1, 0xC movs r2, 0xD - bl MenuPrint + bl Menu_PrintText pop {r4,r5} pop {r0} bx r0 @@ -2502,7 +2502,7 @@ _080F1A46: movs r0, 0xE movs r2, 0x1C movs r3, 0xF - bl MenuFillWindowRectWithBlankTile + bl Menu_BlankWindowRect movs r0, 0 strb r0, [r5] _080F1A60: diff --git a/data/graphics.s b/data/graphics.s index 7792e8a9e..6cc1c2db7 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -4522,7 +4522,7 @@ gPokenavRibbonPokeView_Gfx:: @ 8EA0028 .incbin "graphics/pokenav/ribbon_pokeview.4bpp" .align 2 -gMessageBox_Gfx:: @ 8EA0108 +gDialogueFrame_Gfx:: @ 8EA0108 .incbin "graphics/text_window/message_box.4bpp" .align 2 diff --git a/include/menu.h b/include/menu.h index 9a5ca62a0..3339ff644 100644 --- a/include/menu.h +++ b/include/menu.h @@ -26,38 +26,38 @@ extern u16 gMenuMessageBoxContentTileOffset; void CloseMenu(void); void AppendToList(u8 *list, u8 *pindex, u32 value); -void InitMenuWindow(const struct WindowConfig *); -void MultistepInitMenuWindowBegin(const struct WindowConfig *); +void InitMenuWindow(const struct WindowTemplate *); +void MultistepInitMenuWindowBegin(const struct WindowTemplate *); bool32 MultistepInitMenuWindowContinue(void); -void unref_sub_8071DA4(struct WindowConfig *, u16); -void MenuLoadTextWindowGraphics_OverrideFrameType(u8); -void MenuLoadTextWindowGraphics(void); -void BasicInitMenuWindow(const struct WindowConfig *); -void MenuPrint(const u8 *, u8, u8); -void MenuZeroFillWindowRect(u8, u8, u8, u8); -void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8); -void MenuZeroFillScreen(void); -void MenuDrawTextWindow(u8, u8, u8, u8); +void unref_sub_8071DA4(struct WindowTemplate *, u16); +void Menu_LoadStdFrameGraphicsOverrideStyle(u8); +void Menu_LoadStdFrameGraphics(void); +void BasicInitMenuWindow(const struct WindowTemplate *); +void Menu_PrintText(const u8 *, u8, u8); +void Menu_EraseWindowRect(u8, u8, u8, u8); +void Menu_BlankWindowRect(u8, u8, u8, u8); +void Menu_EraseScreen(void); +void Menu_DrawStdWindowFrame(u8, u8, u8, u8); void sub_8071F40(const u8 *); void sub_8071F60(u8, u8, u8); u16 unref_sub_8071F98(u8, u8); void unref_sub_8071FBC(u16, u8, u8, u8, u8); -void MenuDisplayMessageBox(void); +void Menu_DisplayDialogueFrame(void); void MenuPrintMessage(const u8 *, u8, u8); void MenuPrintMessageDefaultCoords(const u8 *); void MenuSetText(const u8 *); -u8 MenuUpdateWindowText(void); +u8 Menu_UpdateWindowText(void); u8 unref_sub_8072098(void); -void sub_80720B0(void); -u8 MoveMenuCursor(s8); -u8 MoveMenuCursorNoWrap(s8); -u8 GetMenuCursorPos(void); -s8 ProcessMenuInput(void); -s8 ProcessMenuInputNoWrap(void); +void Menu_ClearWindowText(void); +u8 Menu_MoveCursor(s8); +u8 Menu_MoveCursorNoWrap(s8); +u8 Menu_GetCursorPos(void); +s8 Menu_ProcessInput(void); +s8 Menu_ProcessInputNoWrap(void); u8 MoveMenuCursor3(s8); u8 MoveMenuCursor4(s8); void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); -s8 sub_80727CC(void); +s8 Menu_ProcessInputGridLayout(void); u8 sub_807288C(u8); void PrintMenuItems(u8, u8, u8, const struct MenuAction[]); void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); @@ -76,7 +76,7 @@ u8 *sub_8072C44(u8 *, s32, u8, u8); u8 *sub_8072C74(u8 *, const u8 *, u8, u8); u8 sub_8072CA4(const u8 *s); u8 sub_8072CBC(void); -void sub_8072CD4(u8 *, u8 *, u8 *); +void Menu_GetTextColors(u8 *, u8 *, u8 *); u32 MenuUpdateWindowText_OverrideLineLength(u8); struct Window * unref_sub_8072D0C(void); u8 InitMenu(u8, u8, u8, u8, u8, u8); diff --git a/include/text.h b/include/text.h index ebc4ebe7e..edda0c2ca 100644 --- a/include/text.h +++ b/include/text.h @@ -74,7 +74,7 @@ #define CHAR_NEWLINE 0xFE #define EOS 0xFF // end of string -struct WindowConfig +struct WindowTemplate { u8 bgNum; u8 charBaseBlock; @@ -126,7 +126,7 @@ struct Window /*0x20*/ const u8 *text; /*0x24*/ u8 *tileData; /*0x28*/ u16 *tilemap; - /*0x2C*/ const struct WindowConfig *config; + /*0x2C*/ const struct WindowTemplate *template; }; extern vu16 *const gBGControlRegs[]; @@ -137,65 +137,65 @@ extern const u16 gUnknown_081E29D8[]; extern const u16 gUnknown_081E29E0[]; extern const u16 gUnknown_081E29E8[]; -extern const struct WindowConfig gWindowConfig_81E6C3C; -extern const struct WindowConfig gWindowConfig_81E6C58; -extern const struct WindowConfig gWindowConfig_81E6C74; -extern const struct WindowConfig gWindowConfig_81E6C90; -extern const struct WindowConfig gWindowConfig_81E6CAC; -extern const struct WindowConfig gWindowConfig_81E6CC8; -extern const struct WindowConfig gWindowConfig_81E6CE4; -extern const struct WindowConfig gWindowConfig_81E6D00; -extern const struct WindowConfig gWindowConfig_81E6D1C; -extern const struct WindowConfig gWindowConfig_81E6D38; -extern const struct WindowConfig gWindowConfig_81E6D54; -extern const struct WindowConfig gWindowConfig_81E6D70; -extern const struct WindowConfig gWindowConfig_81E6D8C; -extern const struct WindowConfig gWindowConfig_81E6DA8; -extern const struct WindowConfig WindowConfig_TrainerCard_Back_Values; -extern const struct WindowConfig WindowConfig_TrainerCard_Back_Labels; -extern const struct WindowConfig gWindowConfig_81E6DFC; -extern const struct WindowConfig gWindowConfig_81E6E18; -extern const struct WindowConfig gWindowConfig_81E6E34; -extern const struct WindowConfig gWindowConfig_81E6E50; -extern const struct WindowConfig gWindowConfig_81E6E6C; -extern const struct WindowConfig gWindowConfig_81E6E88; -extern const struct WindowConfig gWindowConfig_81E6EA4; -extern const struct WindowConfig gWindowConfig_81E6EC0; -extern const struct WindowConfig gWindowConfig_81E6EDC; -extern const struct WindowConfig gWindowConfig_81E6EF8; -extern const struct WindowConfig gWindowConfig_81E6F14; -extern const struct WindowConfig gWindowConfig_81E6F30; -extern const struct WindowConfig gWindowConfig_81E6F4C; -extern const struct WindowConfig gWindowConfig_81E6F68; -extern const struct WindowConfig gWindowConfig_81E6F84; -extern const struct WindowConfig gWindowConfig_81E6FA0; -extern const struct WindowConfig gWindowConfig_81E6FBC; -extern const struct WindowConfig gWindowConfig_81E6FD8; -extern const struct WindowConfig gWindowConfig_81E6FF4; -extern const struct WindowConfig gWindowConfig_81E7010; -extern const struct WindowConfig gWindowConfig_81E702C; -extern const struct WindowConfig gWindowConfig_81E7048; -extern const struct WindowConfig gWindowConfig_81E7064; -extern const struct WindowConfig gWindowConfig_81E7080; -extern const struct WindowConfig gWindowConfig_81E709C; -extern const struct WindowConfig gWindowConfig_81E70B8; -extern const struct WindowConfig gWindowConfig_81E70D4; -extern const struct WindowConfig gWindowConfig_81E70F0; -extern const struct WindowConfig gWindowConfig_81E710C; -extern const struct WindowConfig gWindowConfig_81E7128; -extern const struct WindowConfig gWindowConfig_81E7144; -extern const struct WindowConfig gWindowConfig_81E7160; -extern const struct WindowConfig gWindowConfig_81E717C; -extern const struct WindowConfig gWindowConfig_81E7198; -extern const struct WindowConfig gWindowConfig_81E71B4; -extern const struct WindowConfig gWindowConfig_81E71D0; -extern const struct WindowConfig gWindowConfig_81E71EC; -extern const struct WindowConfig gWindowConfig_81E7208; -extern const struct WindowConfig gWindowConfig_81E7224; -extern const struct WindowConfig gWindowConfig_81E7240; -extern const struct WindowConfig gWindowConfig_81E725C; -extern const struct WindowConfig gWindowConfig_81E7278; -extern const struct WindowConfig gWindowConfig_81E7294; +extern const struct WindowTemplate gWindowConfig_81E6C3C; +extern const struct WindowTemplate gWindowConfig_81E6C58; +extern const struct WindowTemplate gWindowConfig_81E6C74; +extern const struct WindowTemplate gWindowConfig_81E6C90; +extern const struct WindowTemplate gWindowConfig_81E6CAC; +extern const struct WindowTemplate gWindowConfig_81E6CC8; +extern const struct WindowTemplate gWindowConfig_81E6CE4; +extern const struct WindowTemplate gWindowConfig_81E6D00; +extern const struct WindowTemplate gWindowConfig_81E6D1C; +extern const struct WindowTemplate gWindowConfig_81E6D38; +extern const struct WindowTemplate gWindowConfig_81E6D54; +extern const struct WindowTemplate gWindowConfig_81E6D70; +extern const struct WindowTemplate gWindowConfig_81E6D8C; +extern const struct WindowTemplate gWindowConfig_81E6DA8; +extern const struct WindowTemplate WindowConfig_TrainerCard_Back_Values; +extern const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels; +extern const struct WindowTemplate gWindowConfig_81E6DFC; +extern const struct WindowTemplate gWindowConfig_81E6E18; +extern const struct WindowTemplate gWindowConfig_81E6E34; +extern const struct WindowTemplate gWindowConfig_81E6E50; +extern const struct WindowTemplate gWindowConfig_81E6E6C; +extern const struct WindowTemplate gWindowConfig_81E6E88; +extern const struct WindowTemplate gWindowConfig_81E6EA4; +extern const struct WindowTemplate gWindowConfig_81E6EC0; +extern const struct WindowTemplate gWindowConfig_81E6EDC; +extern const struct WindowTemplate gWindowConfig_81E6EF8; +extern const struct WindowTemplate gWindowConfig_81E6F14; +extern const struct WindowTemplate gWindowConfig_81E6F30; +extern const struct WindowTemplate gWindowConfig_81E6F4C; +extern const struct WindowTemplate gWindowConfig_81E6F68; +extern const struct WindowTemplate gWindowConfig_81E6F84; +extern const struct WindowTemplate gWindowConfig_81E6FA0; +extern const struct WindowTemplate gWindowConfig_81E6FBC; +extern const struct WindowTemplate gWindowConfig_81E6FD8; +extern const struct WindowTemplate gWindowConfig_81E6FF4; +extern const struct WindowTemplate gWindowConfig_81E7010; +extern const struct WindowTemplate gWindowConfig_81E702C; +extern const struct WindowTemplate gWindowConfig_81E7048; +extern const struct WindowTemplate gWindowConfig_81E7064; +extern const struct WindowTemplate gWindowConfig_81E7080; +extern const struct WindowTemplate gWindowConfig_81E709C; +extern const struct WindowTemplate gWindowConfig_81E70B8; +extern const struct WindowTemplate gWindowConfig_81E70D4; +extern const struct WindowTemplate gWindowConfig_81E70F0; +extern const struct WindowTemplate gWindowConfig_81E710C; +extern const struct WindowTemplate gWindowConfig_81E7128; +extern const struct WindowTemplate gWindowConfig_81E7144; +extern const struct WindowTemplate gWindowConfig_81E7160; +extern const struct WindowTemplate gWindowConfig_81E717C; +extern const struct WindowTemplate gWindowConfig_81E7198; +extern const struct WindowTemplate gWindowConfig_81E71B4; +extern const struct WindowTemplate gWindowConfig_81E71D0; +extern const struct WindowTemplate gWindowConfig_81E71EC; +extern const struct WindowTemplate gWindowConfig_81E7208; +extern const struct WindowTemplate gWindowConfig_81E7224; +extern const struct WindowTemplate gWindowConfig_81E7240; +extern const struct WindowTemplate gWindowConfig_81E725C; +extern const struct WindowTemplate gWindowConfig_81E7278; +extern const struct WindowTemplate gWindowConfig_81E7294; extern u16 gBGTilemapBuffers[4][0x400]; @@ -205,37 +205,37 @@ extern u8 gStringVar3[]; extern u8 gStringVar4[]; extern u8 gTileBuffer[]; -void LoadFontDefaultPalette(const struct WindowConfig *winConfig); -void SetUpWindowConfig(const struct WindowConfig *winConfig); +void LoadFontDefaultPalette(const struct WindowTemplate *winConfig); +void SetUpWindowConfig(const struct WindowTemplate *winConfig); u16 InitWindowTileData(struct Window *win, u16 startOffset); u32 MultistepInitWindowTileData(struct Window *win, u16 startOffset); bool32 MultistepLoadFont(void); -void InitWindowFromConfig(struct Window *win, const struct WindowConfig *winConfig); -void InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); -void sub_8002E4C(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6); +void Text_InitWindowWithTemplate(struct Window *win, const struct WindowTemplate *winConfig); +void Text_InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); +void Text_InitWindow8002E4C(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6); void sub_8002E90(struct Window *win, const u8 *text); -void sub_8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); -u8 sub_8002F44(struct Window *win); -u8 sub_8003418(struct Window *win); -u8 sub_8003460(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); +void Text_InitWindow8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); +u8 Text_PrintWindow8002F44(struct Window *win); +u8 Text_PrintWindowSimple(struct Window *win); +u8 Text_InitWindowAndPrintText(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 top); void sub_80034D4(u8 *tileData, const u8 *text); u8 sub_80034EC(u8 *str); u8 *sub_8003504(u8 *dest, s32 value, u8 alignAmount, u8 alignType); u8 *sub_8003558(u8 *dest, const u8 *src, u8 alignAmount, u8 alignType); -u8 sub_80035AC(struct Window *win); -u8 sub_800374C(struct Window *win); -u8 sub_8003778(struct Window *win); -u8 sub_80037A0(struct Window *win); -u32 sub_80037C8(struct Window *win, u8 lineLength); -void ClearWindowTextLines(struct Window *win); -u16 GetWindowTilemapEntry(struct Window *win, u8 x, u8 y); -void DrawWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom); +u8 Text_UpdateWindow(struct Window *win); +u8 Text_UpdateWindowInBattle(struct Window *win); +u8 Text_UpdateWindowAutoscroll(struct Window *win); +u8 Text_UpdateWindowInContest(struct Window *win); +u32 Text_UpdateWindowOverrideLineLength(struct Window *win, u8 lineLength); +void Text_ClearWindow(struct Window *win); +u16 Text_GetWindowTilemapEntry(struct Window *win, u8 x, u8 y); +void Text_FillWindowBorder(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom); void DrawWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom); void FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom); void FillWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom); void ZeroFillWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom); -void FillWindowRectWithBlankTile(struct Window *win, u8 left, u8 top, u8 right, u8 bottom); +void Text_BlankWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom); u8 GetExtCtrlCodeLength(u8 code); u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignType); u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignType); @@ -245,9 +245,9 @@ u8 sub_8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 l u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6); u8 sub_8004E24(struct Window *win); -void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow); -void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text); -u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s); +void Text_GetTextColors(struct Window *win, u8 *foreground, u8 *background, u8 *shadow); +void sub_8004E3C(const struct WindowTemplate *winConfig, u8 *tileData, const u8 *text); +u8 Text_GetStringWidthFromWindowTemplate(const struct WindowTemplate *winConfig, const u8 *s); void ConvertInternationalString(u8 *s, u8 language); void StripExtCtrlCodes(u8 *str); s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2); diff --git a/include/text_window.h b/include/text_window.h index 7df1453ca..21e05ece0 100644 --- a/include/text_window.h +++ b/include/text_window.h @@ -9,17 +9,17 @@ struct FrameGraphics const u16 *palette; }; -u16 SetTextWindowBaseTileNum(u16 baseTileNum); -void LoadTextWindowGraphics(struct Window *win); -void LoadTextWindowGraphics_OverridePalSlot(struct Window *win, u8 palSlot); -void LoadTextWindowGraphics_OverrideFrameType(struct Window *win, u8 frameType); -void DrawTextWindow(struct Window *win, u8 left, u8 top, u8 right, u8 bottom); -const struct FrameGraphics *GetTextWindowFrameGraphics(u8 frameType); -u16 SetMessageBoxBaseTileNum(u16 baseTileNum); +u16 TextWindow_SetBaseTileNum(u16 baseTileNum); +void TextWindow_LoadStdFrameGraphics(struct Window *win); +void TextWindow_LoadStdFrameGraphicsOverridePal(struct Window *win, u8 palSlot); +void TextWindow_LoadStdFrameGraphicsOverrideStyle(struct Window *win, u8 frameType); +void TextWindow_DrawStdFrame(struct Window *win, u8 left, u8 top, u8 right, u8 bottom); +const struct FrameGraphics *TextWindow_GetFrameGraphics(u8 frameType); +u16 TextWindow_SetDlgFrameBaseTileNum(u16 baseTileNum); void unref_sub_80651DC(struct Window *, u8 *); -void DisplayMessageBox(struct Window *); -void DrawStandardMessageBox(struct Window *win); -void LoadMessageBoxTiles(struct Window *win); -void ClearStandardMessageBox(struct Window *win); +void TextWindow_DisplayDialogueFrame(struct Window *); +void TextWindow_DrawDialogueFrame(struct Window *win); +void TextWindow_LoadDialogueFrameTiles(struct Window *win); +void TextWindow_EraseDialogueFrame(struct Window *win); #endif // GUARD_TEXT_WINDOW_H diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index ae84e5585..dccf73fa8 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -245,9 +245,9 @@ void InitBattle(void) gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; gBattleTerrain = BattleSetup_GetTerrain(); - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); - InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0); - InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowConfig_81E71D0); + Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowConfig_81E71EC); sub_800D6D4(); sub_800DAB8(); ResetSpriteData(); @@ -898,7 +898,7 @@ void BattleMainCB2(void) { AnimateSprites(); BuildOamBuffer(); - sub_800374C(&gUnknown_03004210); + Text_UpdateWindowInBattle(&gUnknown_03004210); UpdatePaletteFade(); RunTasks(); } @@ -1221,9 +1221,9 @@ void c2_8011A1C(void) gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); - InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0); - InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowConfig_81E71D0); + Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowConfig_81E71EC); sub_800D6D4(); LoadCompressedPalette(gUnknown_08D004E0, 0, 64); sub_800D74C(); diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 5a20a8324..4be9b7d1c 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -10767,8 +10767,8 @@ void atk59_handlelearnnewmove(void) void sub_8023A80(void) { sub_802BBD4(0x18, 8, 0x1D, 0xD, 0); - InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); } @@ -11714,9 +11714,9 @@ _08024AC4:\n\ str r0, [sp]\n\ adds r0, r4, 0\n\ movs r3, 0xC\n\ - bl InitWindow\n\ + bl Text_InitWindow\n\ adds r0, r4, 0\n\ - bl sub_8002F44\n\ + bl Text_PrintWindow8002F44\n\ ldr r1, _08024AEC @ =gSharedMem\n\ ldr r2, _08024AF0 @ =0x0001609c\n\ adds r1, r2\n\ @@ -11835,9 +11835,9 @@ _08024BC0:\n\ str r0, [sp]\n\ adds r0, r4, 0\n\ movs r3, 0xC\n\ - bl InitWindow\n\ + bl Text_InitWindow\n\ adds r0, r4, 0\n\ - bl sub_8002F44\n\ + bl Text_PrintWindow8002F44\n\ ldr r1, _08024BFC @ =gSharedMem\n\ ldr r0, _08024C00 @ =0x0001609c\n\ adds r1, r0\n\ diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 54181bc21..69306b725 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -1413,7 +1413,7 @@ void LinkOpponentHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_8037C2C; } diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 2c78d4a82..c86c337d9 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -1358,7 +1358,7 @@ void LinkPartnerHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_811DFA0; } diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index ab7b6944b..622e3e9f9 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1407,7 +1407,7 @@ void OpponentHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_80331D0; } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index f992e3e51..4bbda2afd 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -745,8 +745,8 @@ void sub_802C68C(void) gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1; sub_802E3B4(gUnknown_03004344, 27); FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37); + Text_PrintWindow8002F44(&gUnknown_03004210); gBattleBankFunc[gActiveBank] = sub_802CA60; } } @@ -854,8 +854,8 @@ void sub_802CA60(void) gMoveSelectionCursor[gActiveBank] = gUnknown_03004344; sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_802E220(); sub_802E2D4(); } @@ -867,8 +867,8 @@ void sub_802CA60(void) sub_802E12C(gMoveSelectionCursor[gActiveBank], BattleText_Format); gBattleBankFunc[gActiveBank] = sub_802C68C; FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_802E220(); sub_802E2D4(); } @@ -1557,13 +1557,13 @@ void sub_802E12C(s32 a, const u8 *b) StringCopy(gDisplayedStringBattle, b); StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]); - InitWindow( + Text_InitWindow( &gUnknown_03004210, gDisplayedStringBattle, 0x300 + a * 20, (a & 1) ? 11 : 1, (a < 2) ? 0x37 : 0x39); - sub_8002F44(&gUnknown_03004210); + Text_PrintWindow8002F44(&gUnknown_03004210); } void sub_802E1B0(void) @@ -1601,8 +1601,8 @@ void sub_802E220(void) str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2); *str++ = CHAR_SLASH; ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37); + Text_PrintWindow8002F44(&gUnknown_03004210); } } @@ -1614,7 +1614,7 @@ void sub_802E2D4(void) if (gBattleBufferA[gActiveBank][2] == 1) { FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37); + Text_InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37); } else { @@ -1624,9 +1624,9 @@ void sub_802E2D4(void) str = StringCopy(str, BattleText_Format); StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]); FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); } - sub_8002F44(&gUnknown_03004210); + Text_PrintWindow8002F44(&gUnknown_03004210); } const u8 gUnknown_081FAE89[][2] = @@ -1697,7 +1697,7 @@ void b_link_standby_message(void) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - sub_8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15); } } @@ -2562,7 +2562,7 @@ void PlayerHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); gBattleBankFunc[gActiveBank] = sub_802DF18; } @@ -2585,8 +2585,8 @@ void PlayerHandlecmd18(void) gBattleBankFunc[gActiveBank] = sub_802C098; - InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_814A5C0(0, 0xFFFF, 12, 11679, 0); for (r4 = 0; r4 < 4; r4++) @@ -2595,8 +2595,8 @@ void PlayerHandlecmd18(void) sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); StrCpyDecodeToDisplayedStringBattle(BattleText_OtherMenu); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); } void PlayerHandlecmd19() @@ -2619,8 +2619,8 @@ void sub_80304A8(void) sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); if (gBattleBufferA[gActiveBank][2] != 1) { - InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55); + Text_PrintWindow8002F44(&gUnknown_03004210); } sub_802E220(); sub_802E2D4(); diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 0a629ba4d..72a0cc32c 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -453,7 +453,7 @@ void SafariHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_812B694; } @@ -476,8 +476,8 @@ void SafariHandlecmd18(void) FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2; - InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_814A5C0(0, 0xFFFF, 12, 11679, 0); for (i = 0; i < 4; i++) @@ -486,8 +486,8 @@ void SafariHandlecmd18(void) sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); StrCpyDecodeToDisplayedStringBattle(BattleText_PlayerMenu); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); } void SafariHandlecmd19(void) diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index bd2b4a45b..6a9e8071e 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -1246,7 +1246,7 @@ void WallyHandlePrintString(void) if (*ptr == 2) DestroyMenuCursor(); BufferStringBattle(*ptr); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); gBattleBankFunc[gActiveBank] = sub_8137454; } @@ -1268,19 +1268,19 @@ void WallyHandlecmd18(void) FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); gBattleBankFunc[gActiveBank] = sub_81372BC; - InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); for (i = 0; i < 4; i++) nullsub_8(i); sub_802E3E4(0, 0); StrCpyDecodeToDisplayedStringBattle(BattleText_WallyMenu); #ifdef ENGLISH - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35); #else - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35); #endif - sub_8002F44(&gUnknown_03004210); + Text_PrintWindow8002F44(&gUnknown_03004210); } void WallyHandlecmd19(void) diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index 7bce00d82..67f6e24ef 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -583,13 +583,13 @@ static void Task_HandlePopupMenuInput(u8 taskId) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); return; } if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); return; } if (gMain.newKeys & A_BUTTON) @@ -598,7 +598,7 @@ static void Task_HandlePopupMenuInput(u8 taskId) func = PartyMenuGetPopupMenuFunc(gTasks[taskId].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, - GetMenuCursorPos()); + Menu_GetCursorPos()); func(taskId); return; } diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 97740e3da..fb7392f33 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -202,7 +202,7 @@ static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4); ConvertIntToDecimalStringN_DigitWidth6(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_RIGHT_ALIGN, 4); ConvertIntToDecimalStringN_DigitWidth6(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_RIGHT_ALIGN, 4); - MenuPrint(gOtherText_WinRecord, 3, 3); + Menu_PrintText(gOtherText_WinRecord, 3, 3); } static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y) @@ -217,37 +217,37 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y) buffer[4] = 0x11; buffer[5] = 1; StringCopy(buffer + 6, gOtherText_SevenDashes); - MenuPrint(buffer, 3, y); + Menu_PrintText(buffer, 3, y); StringCopy(buffer + 6, gOtherText_FourDashes); - MenuPrint(buffer, 11, y); - MenuPrint(buffer, 17, y); - MenuPrint(buffer, 23, y); + Menu_PrintText(buffer, 11, y); + Menu_PrintText(buffer, 17, y); + Menu_PrintText(buffer, 23, y); } else { StringFillWithTerminator(gStringVar1, 8); StringCopyN(gStringVar1, record->name, 7); - MenuPrint(gStringVar1, 3, y); + Menu_PrintText(gStringVar1, 3, y); gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; gStringVar1[2] = 6; ConvertIntToDecimalStringN(gStringVar1 + 3, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4); - MenuPrint(gStringVar1, 11, y); + Menu_PrintText(gStringVar1, 11, y); ConvertIntToDecimalStringN(gStringVar1 + 3, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4); - MenuPrint(gStringVar1, 17, y); + Menu_PrintText(gStringVar1, 17, y); ConvertIntToDecimalStringN(gStringVar1 + 3, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); - MenuPrint(gStringVar1, 23, y); + Menu_PrintText(gStringVar1, 23, y); } } void ShowLinkBattleRecords(void) { s32 i; - MenuDrawTextWindow(1, 0, 28, 18); + Menu_DrawStdWindowFrame(1, 0, 28, 18); sub_8072BD8(gOtherText_BattleResults, 0, 1, 240); PrintLinkBattleWinsLossesDraws(gSaveBlock1.linkBattleRecords); #if ENGLISH - MenuPrint(gOtherText_WinLoseDraw, 12, 6); + Menu_PrintText(gOtherText_WinLoseDraw, 12, 6); #elif GERMAN MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1); #endif @@ -285,11 +285,11 @@ static bool32 sub_8110494(u8 level) static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top) { - MenuPrint(str, left, top); + Menu_PrintText(str, left, top); if (streak > 9999) streak = 9999; sub_8072C14(gStringVar1, streak, 24, 1); - MenuPrint(gOtherText_WinStreak, left + 7, top); + Menu_PrintText(gOtherText_WinStreak, left + 7, top); } static void PrintRecordWinStreak(u8 level, u8 left, u8 top) @@ -320,10 +320,10 @@ static void PrintLastWinStreak(u8 level, u8 left, u8 top) void ShowBattleTowerRecords(void) { u16 i; - MenuDrawTextWindow(3, 1, 27, 17); + Menu_DrawStdWindowFrame(3, 1, 27, 17); sub_8072BD8(gOtherText_BattleTowerResults, 3, 2, 0xC8); - MenuPrint(gOtherText_Lv50, 5, 6); - MenuPrint(gOtherText_Lv100, 5, 12); + Menu_PrintText(gOtherText_Lv50, 5, 6); + Menu_PrintText(gOtherText_Lv100, 5, 12); for (i = 5; i < 26; i++) { sub_8071F60(CHAR_HYPHEN, i, 10); diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 6a6d7a137..fded87090 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -80,7 +80,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) dp12_8087EA4(); SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gBattle_BG1_X = 0; diff --git a/src/contest.c b/src/contest.c index c32719648..c935f0ecb 100644 --- a/src/contest.c +++ b/src/contest.c @@ -358,8 +358,8 @@ void LoadContestBgAfterMoveAnim(void) void SetUpContestWindow(void) { SetUpWindowConfig(&gWindowConfig_81E6FD8); - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8); - InitWindowFromConfig(&gMenuWindow, &gWindowConfig_81E6FF4); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6FD8); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowConfig_81E6FF4); } void sub_80AB350(void) @@ -651,13 +651,13 @@ void sub_80ABB70(u8 taskId) InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 1); sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].func = sub_80ABC3C; } void sub_80ABC3C(u8 taskId) { - if (sub_80037A0(&gMenuWindow) == 1) + if (Text_UpdateWindowInContest(&gMenuWindow) == 1) gTasks[taskId].func = sub_80ABC70; } @@ -715,14 +715,14 @@ void sub_80ABCDC(u8 taskId) } r5 = StringCopy(r5, gMoveNames[move]); - sub_8002E4C( + Text_InitWindow8002E4C( &gUnknown_03004210, sp8, 776 + i * 20, gUnknown_083CA340[i][0] * 8 + 4, gUnknown_083CA340[i][1] * 8, 1); - sub_8002F44(&gUnknown_03004210); + Text_PrintWindow8002F44(&gUnknown_03004210); } sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); @@ -771,7 +771,7 @@ void sub_80ABEA0(u8 taskId) InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 1); sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); - sub_8003460(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindowAndPrintText(&gMenuWindow, gStringVar4, 776, 1, 15); gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; gTasks[taskId].func = sub_80ABC70; @@ -976,12 +976,12 @@ void sub_80AC2CC(u8 taskId) else StringCopy(gStringVar2, gUnknown_083CC330[sContestantStatus[r7].moveCategory]); StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 6; } return; case 6: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sContest.unk1925E = 0; gTasks[taskId].data[0] = 7; @@ -1059,7 +1059,7 @@ void sub_80AC2CC(u8 taskId) } return; case 24: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) gTasks[taskId].data[0] = 23; return; case 48: @@ -1171,7 +1171,7 @@ void sub_80AC2CC(u8 taskId) } return; case 27: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) gTasks[taskId].data[0] = 28; return; case 28: @@ -1234,13 +1234,13 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, ContestString_CantAppealNextTurn); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); } gTasks[taskId].data[0] = 52; } return; case 52: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { if (!sContestantStatus[r7].unk15_6) gTasks[taskId].data[0] = 17; @@ -1254,11 +1254,11 @@ void sub_80AC2CC(u8 taskId) { sub_80AF138(); if (r4 == 1) - sub_8002EB0(&gMenuWindow, ContestString_WentOverWell, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, ContestString_WentOverWell, 776, 1, 15); else if (r4 == 2) - sub_8002EB0(&gMenuWindow, ContestString_WentOverVeryWell, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, ContestString_WentOverVeryWell, 776, 1, 15); else - sub_8002EB0(&gMenuWindow, ContestString_AppealComboExcellently, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, ContestString_AppealComboExcellently, 776, 1, 15); sub_80B1710(3); gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 45; @@ -1268,7 +1268,7 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, ContestString_JudgeExpectantly2); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); sub_80B1710(2); gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 45; @@ -1282,7 +1282,7 @@ void sub_80AC2CC(u8 taskId) } return; case 15: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { if (++gTasks[taskId].data[10] > 50) { @@ -1311,7 +1311,7 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, ContestString_DissapointedRepeat); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[10] = 0; sub_80B1710(0); gTasks[taskId].data[0] = 46; @@ -1326,7 +1326,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 19; return; case 19: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80AFBA0(sContestantStatus[r7].appeal2, -sContestantStatus[r7].unk18, r7); sContestantStatus[r7].appeal2 -= sContestantStatus[r7].unk18; @@ -1381,7 +1381,7 @@ void sub_80AC2CC(u8 taskId) StringExpandPlaceholders(gStringVar4, ContestString_WentOverGreat); else StringExpandPlaceholders(gStringVar4, ContestString_GotCrowdGoing); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = 0; if (r4 < 0) @@ -1400,7 +1400,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[10]++; break; case 1: - if (!sContest.unk1920B_0 && sub_80037A0(&gMenuWindow) != 0) + if (!sContest.unk1920B_0 && Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80B1CBC(-1); gTasks[taskId].data[10]++; @@ -1431,7 +1431,7 @@ void sub_80AC2CC(u8 taskId) switch (gTasks[taskId].data[10]) { case 0: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80B1EA8(1, 1); gTasks[taskId].data[10]++; @@ -1491,20 +1491,20 @@ void sub_80AC2CC(u8 taskId) StringCopy(gStringVar1, gContestMons[r7].nickname); StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); StringExpandPlaceholders(gStringVar4, ContestString_CrowdWatches); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 58; return; case 58: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80AF138(); StringExpandPlaceholders(gStringVar4, ContestString_Ignored2); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 59; } return; case 59: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80AF138(); gTasks[taskId].data[0] = 55; @@ -1517,11 +1517,11 @@ void sub_80AC2CC(u8 taskId) StringCopy(gStringVar1, gContestMons[r7].nickname); StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 34; return; case 34: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) gTasks[taskId].data[0] = 55; return; case 55: @@ -1563,11 +1563,11 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, gUnknown_083CB00D); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 32; return; case 32: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) gTasks[taskId].data[0] = 21; return; case 21: @@ -1734,13 +1734,13 @@ void sub_80ADB88(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); StringExpandPlaceholders(gStringVar4, gContestStandOutStrings[r4]); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].func = sub_80ADC10; } void sub_80ADC10(u8 taskId) { - if (sub_80037A0(&gMenuWindow) == 1) + if (Text_UpdateWindowInContest(&gMenuWindow) == 1) { gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_80ADC4C; @@ -1813,14 +1813,14 @@ void sub_80ADDA4(u8 taskId) sub_80BE23C(sContestantStatus[gContestPlayerMonIndex].prevMove); gUnknown_03005D28 = gRngValue; StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_80ADE54; } void sub_80ADE54(u8 taskId) { - if (sub_80037A0(&gMenuWindow) == 1) + if (Text_UpdateWindowInContest(&gMenuWindow) == 1) { sub_80B2184(); gBattle_BG1_X = 0; @@ -2172,7 +2172,7 @@ void sub_80AE5D4(u8 p, u8 b) else { StringCopy(str, gContestMons[p].trainerName); - sub_8003460( + Text_InitWindowAndPrintText( &gUnknown_03004210, gDisplayedStringBattle, 592 + gUnknown_02038696[p] * 22, @@ -2432,8 +2432,8 @@ void sub_80AEBEC(u16 a) *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5036; } - sub_8003460(&gUnknown_03004210, gContestEffectStrings[gContestMoves[a].effect], 868, 11, 35); - sub_8003460(&gUnknown_03004210, gUnknown_083CC5A2, 866, 16, 31); + Text_InitWindowAndPrintText(&gUnknown_03004210, gContestEffectStrings[gContestMoves[a].effect], 868, 11, 35); + Text_InitWindowAndPrintText(&gUnknown_03004210, gUnknown_083CC5A2, 866, 16, 31); } void sub_80AED58(void) @@ -2656,7 +2656,7 @@ void sub_80AF1E4(u8 a, u8 b) else sub_80AE598(gDisplayedStringBattle, gMoveNames[sContestantStatus[a].currMove], r3); sub_80AF2A0(a); - sub_8003460( + Text_InitWindowAndPrintText( &gUnknown_03004210, gDisplayedStringBattle, 696 + a * 20, @@ -2953,7 +2953,7 @@ void sub_80AF860(void) gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; sub_80AF138(); - sub_8003460(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15); + Text_InitWindowAndPrintText(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15); } u8 unref_sub_80AF89C(s16 a, s16 b, u8 c, u8 d) @@ -4193,7 +4193,7 @@ void sub_80B0D7C(void) r5++; } ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4); - sub_8003460( + Text_InitWindowAndPrintText( &gUnknown_03004210, sp8, 592 + gUnknown_02038696[i] * 22, @@ -4211,7 +4211,7 @@ void sub_80B0D7C(void) r5++; } ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4); - sub_8003460( + Text_InitWindowAndPrintText( &gUnknown_03004210, sp8, 512 + gUnknown_02038696[i] * 20, @@ -4484,7 +4484,7 @@ void sub_80B146C(u8 a, u8 b) StringCopy(gStringVar3, gText_Contest_Fear); StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[b]); sub_80AF138(); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); } void sub_80B157C(u8 p) @@ -4631,7 +4631,7 @@ void unref_sub_80B19D0(void) { u8 str[20]; StringCopy(str, gUnknown_083CC2EC); - sub_8003460(&gUnknown_03004210, str, 680, 0, 0); + Text_InitWindowAndPrintText(&gUnknown_03004210, str, 680, 0, 0); } s8 Contest_GetMoveExcitement(u16 move) diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 49fe6864b..2c20ba72b 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -247,8 +247,8 @@ static const struct OamData gUnknown_083C9400 = u8 unref_sub_80A9B28(void) { - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 0, 17, 18); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 17, 18); PrintMenuItems(1, 1, 7, gMatsudaDebugMenuActions); InitMenu(0, 1, 1, 7, 0, 16); gCallback_03004AE8 = sub_80A9B78; @@ -257,7 +257,7 @@ u8 unref_sub_80A9B28(void) static bool8 sub_80A9B78(void) { - s8 choice = ProcessMenuInput(); + s8 choice = Menu_ProcessInput(); switch (choice) { @@ -450,7 +450,7 @@ static void sub_80A9F50(void) REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP; REG_DISPCNT |= DISPCNT_OBJ_ON | DISPCNT_BG0_ON; SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitWindowFromConfig(&gMenuWindow, &gWindowConfig_81E6C3C); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowConfig_81E6C3C); REG_MOSAIC = 0; REG_BLDCNT = 0; REG_BLDALPHA = 0; @@ -546,7 +546,7 @@ static void sub_80AA10C(void) for (i = 0; i < 6; i++) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList1[i], + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenuTextList1[i], (0xA * i + 0x2A), gMatsudaDebugMenuContestTopLeft[i][0], gMatsudaDebugMenuContestTopLeft[i][1]); } @@ -555,8 +555,8 @@ static void sub_80AA10C(void) zero = 0; // it's possible this was some assignment that matsuda used to quickly edit and test things without changing whats passed to the later functions. sub_80AA5BC(zero); sub_80AA5E8(gSpecialVar_ContestRank); - sub_8003460(&gMenuWindow, gMatsudaDebugMenu_GoBackText, 0xD6, 0x12, 0x12); - sub_8003460(&gMenuWindow, gMatsudaDebugMenu_BattlePointsText, 0xDC, zero, 0xC); + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenu_GoBackText, 0xD6, 0x12, 0x12); + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenu_BattlePointsText, 0xDC, zero, 0xC); LoadSpriteSheet(gUnknown_083C92B4); LoadSpritePalette(gUnknown_083C92BC); sub_80AA280(3); @@ -580,64 +580,64 @@ void sub_80AA280(u8 var) // no? for (i = 0; i < 4; i++) { if (var == i) - sub_8003460(&gMenuWindow, gSharedMem, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); else - sub_8003460(&gMenuWindow, gContestMons[i].trainerName, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); + Text_InitWindowAndPrintText(&gMenuWindow, gContestMons[i].trainerName, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); } } static void sub_80AA340(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].cool, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x66, gUnknown_083C9282[0], gUnknown_083C9282[1]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x66, gUnknown_083C9282[0], gUnknown_083C9282[1]); } static void sub_80AA388(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].cute, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x6C, gUnknown_083C9282[2], gUnknown_083C9282[3]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x6C, gUnknown_083C9282[2], gUnknown_083C9282[3]); } static void sub_80AA3D0(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].beauty, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x72, gUnknown_083C9282[4], gUnknown_083C9282[5]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x72, gUnknown_083C9282[4], gUnknown_083C9282[5]); } static void sub_80AA418(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].smart, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x78, gUnknown_083C9282[6], gUnknown_083C9282[7]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x78, gUnknown_083C9282[6], gUnknown_083C9282[7]); } static void sub_80AA460(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].tough, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x7E, gUnknown_083C9282[8], gUnknown_083C9282[9]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x7E, gUnknown_083C9282[8], gUnknown_083C9282[9]); } static void sub_80AA4A8(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].sheen, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x84, gUnknown_083C9282[10], gUnknown_083C9282[11]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x84, gUnknown_083C9282[10], gUnknown_083C9282[11]); } static void sub_80AA4F0(u8 var1, u8 var2) { FillWindowRect_DefaultPalette(&gMenuWindow, 0, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1], gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1] + 1); - sub_8003460(&gMenuWindow, gMoveNames[gContestMons[var1].moves[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]); + Text_InitWindowAndPrintText(&gMenuWindow, gMoveNames[gContestMons[var1].moves[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]); ConvertIntToDecimalStringN(gStringVar1, gContestMons[var1].moves[var2], STR_CONV_MODE_LEADING_ZEROS, 3); - sub_8003460(&gMenuWindow, gStringVar1, 0xFA + var2 * 6, gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1]); + Text_InitWindowAndPrintText(&gMenuWindow, gStringVar1, 0xFA + var2 * 6, gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1]); } static void sub_80AA5BC(u8 var) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12); + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12); } void sub_80AA5E8(u8 var) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4); + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4); } static void sub_80AA614(u8 var1, u8 var2) @@ -645,7 +645,7 @@ static void sub_80AA614(u8 var1, u8 var2) u16 var = sub_80AE770(var1, var2); ConvertIntToDecimalStringN(gSharedMem, var, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0xE2, 3, 0xC); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0xE2, 3, 0xC); } void sub_80AA658(u8 var) @@ -1076,9 +1076,9 @@ void unref_sub_80AB084(u8 *text) } } SetUpWindowConfig(&gWindowConfig_81E6FD8); - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6FD8); LoadFontDefaultPalette(&gWindowConfig_81E6FD8); - sub_8003460(&gUnknown_03004210, text, 1, 9, 7); + Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); } void sub_80AB184(void) diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 83dba8b73..31f232d82 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -95,9 +95,9 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) StringAppend(localPtr, gUnknown_0839B24D); StringAppend(localPtr, gSpeciesNames[eggSpecies]); StringAppend(localPtr, gUnknown_0839B255); - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 14, 30, 19); - MenuPrint(localPtr, 1, 15); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 14, 30, 19); + Menu_PrintText(localPtr, 1, 15); gCallback_03004AE8 = sub_8083D4C; return 0; } @@ -179,7 +179,7 @@ u8 MoriDebugMenu_PokeblockCase(void) bool8 MoriDebugMenuProcessInput(void) { - s8 choice = ProcessMenuInput(); + s8 choice = Menu_ProcessInput(); switch (choice) { @@ -196,8 +196,8 @@ bool8 MoriDebugMenuProcessInput(void) s8 InitMoriDebugMenu(void) { - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 0, 10, 19); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 10, 19); PrintMenuItems(1, 1, 9, gMoriDebugMenuActions); InitMenu(0, 1, 1, 9, 0, 9); gCallback_03004AE8 = MoriDebugMenuProcessInput; diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 968b047d9..4f4a7bd06 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -171,16 +171,16 @@ void Task_InitSoundCheckMenu(u8 taskId) if (!gPaletteFade.active) { - MenuDrawTextWindow(2, 0, 27, 3); - MenuDrawTextWindow(2, 5, 27, 10); - MenuDrawTextWindow(2, 12, 27, 17); - MenuPrint(soundcheckStr, 4, 1); - MenuPrint(abDescStr, 14, 1); - MenuPrint(bgmStr, 4, 6); - MenuPrint(upDownStr, 14, 6); - MenuPrint(seStr, 4, 13); - MenuPrint(upDownStr, 14, 13); - MenuPrint(driverStr, 14, 18); + Menu_DrawStdWindowFrame(2, 0, 27, 3); + Menu_DrawStdWindowFrame(2, 5, 27, 10); + Menu_DrawStdWindowFrame(2, 12, 27, 17); + Menu_PrintText(soundcheckStr, 4, 1); + Menu_PrintText(abDescStr, 14, 1); + Menu_PrintText(bgmStr, 4, 6); + Menu_PrintText(upDownStr, 14, 6); + Menu_PrintText(seStr, 4, 13); + Menu_PrintText(upDownStr, 14, 13); + Menu_PrintText(driverStr, 14, 18); gTasks[taskId].func = sub_80BA384; REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); @@ -384,7 +384,7 @@ void PrintSoundNumber(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? str[1] = divisorValue + CHAR_0; str[2] = ((soundIndex % 100) % 10) + CHAR_0; - MenuPrint(str, x, y); + Menu_PrintText(str, x, y); } void sub_80BA79C(const u8 *const string, u16 x, u16 y) @@ -400,7 +400,7 @@ void sub_80BA79C(const u8 *const string, u16 x, u16 y) for (i = 0; string[i] != EOS && i < 10; i++) str[i] = string[i]; - MenuPrint(str, x, y); + Menu_PrintText(str, x, y); } void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu @@ -421,21 +421,21 @@ void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu u8 stereoStr[] = _("すてれお‥‥‥‥"); // stereo REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 29, 19); - MenuPrint(bbackStr, 19, 4); - MenuPrint(aplayStr, 19, 2); - MenuPrint(voiceStr, 2, 1); - MenuPrint(volumeStr, 2, 3); - MenuPrint(panpotStr, 2, 5); - MenuPrint(pitchStr, 2, 7); - MenuPrint(lengthStr, 2, 9); - MenuPrint(releaseStr, 2, 11); - MenuPrint(progressStr, 2, 13); - MenuPrint(chorusStr, 2, 15); - MenuPrint(priorityStr, 2, 17); - MenuPrint(playingStr, 19, 16); - MenuPrint(reverseStr, 19, 14); - MenuPrint(stereoStr, 19, 12); + Menu_DrawStdWindowFrame(0, 0, 29, 19); + Menu_PrintText(bbackStr, 19, 4); + Menu_PrintText(aplayStr, 19, 2); + Menu_PrintText(voiceStr, 2, 1); + Menu_PrintText(volumeStr, 2, 3); + Menu_PrintText(panpotStr, 2, 5); + Menu_PrintText(pitchStr, 2, 7); + Menu_PrintText(lengthStr, 2, 9); + Menu_PrintText(releaseStr, 2, 11); + Menu_PrintText(progressStr, 2, 13); + Menu_PrintText(chorusStr, 2, 15); + Menu_PrintText(priorityStr, 2, 17); + Menu_PrintText(playingStr, 19, 16); + Menu_PrintText(reverseStr, 19, 14); + Menu_PrintText(stereoStr, 19, 12); REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); sDriverTestSelection = 0; @@ -465,7 +465,7 @@ void Task_ProcessDriverTestInput(u8 taskId) REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gTasks[taskId].func = Task_InitSoundCheckMenu; return; } @@ -627,8 +627,8 @@ void sub_80BAE10(u8 var1, u8 var2) u8 str1[] = _("▶"); u8 str2[] = _(" "); - MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); - MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); + Menu_PrintText(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); + Menu_PrintText(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); } void PrintSignedNumber(int n, u16 x, u16 y, u8 digits) @@ -677,7 +677,7 @@ void PrintSignedNumber(int n, u16 x, u16 y, u8 digits) n %= powersOfTen[i]; } - MenuPrint(str, x, y); + Menu_PrintText(str, x, y); } static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; @@ -689,10 +689,10 @@ void sub_80BAF84(u8 taskId) u8 playingStr[] = _("さいせいちゆう‥"); REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 29, 19); - MenuPrint(seStr, 3, 2); - MenuPrint(panStr, 3, 4); - MenuPrint(playingStr, 3, 8); + Menu_DrawStdWindowFrame(0, 0, 29, 19); + Menu_PrintText(seStr, 3, 2); + Menu_PrintText(panStr, 3, 4); + Menu_PrintText(playingStr, 3, 8); REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); sSoundTestParams[CRY_TEST_VOICE] = 1; @@ -739,7 +739,7 @@ void sub_80BB038(u8 taskId) REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gTasks[taskId].func = Task_InitSoundCheckMenu; return; } @@ -806,10 +806,10 @@ void sub_80BB1D4(void) switch (gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]) { case 127: - MenuPrint(lrStr, 7, 4); + Menu_PrintText(lrStr, 7, 4); break; case -128: - MenuPrint(rlStr, 7, 4); + Menu_PrintText(rlStr, 7, 4); break; default: PrintSignedNumber(gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]], 7, 4, 3); @@ -1247,7 +1247,7 @@ void Task_InitCryTest(u8 taskId) while (ShowPokedexCryScreen(&cryStruct2, 2) == FALSE) ; - MenuDrawTextWindow(0, 16, 5, 19); + Menu_DrawStdWindowFrame(0, 16, 5, 19); PrintCryNumber(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); REG_BG2HOFS = 0; @@ -1288,7 +1288,7 @@ void Task_ProcessCryTestInput(u8 taskId) REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gTasks[taskId].func = Task_InitSoundCheckMenu; DestroyCryMeterNeedleSprite(); } diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index a8c3ad16b..e95806c74 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -32,8 +32,8 @@ const struct MenuAction gUnknown_0842C29C[] = { int unref_sub_814A414(void) { - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 0, 16, 18); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 16, 18); PrintMenuItems(2, 1, 8, gUnknown_0842C29C); InitMenu(0, 1, 1, 8, 0, 15); gCallback_03004AE8 = sub_814A464; @@ -42,7 +42,7 @@ int unref_sub_814A414(void) static u8 sub_814A464(void) { - s8 result = ProcessMenuInput(); + s8 result = Menu_ProcessInput(); if (result == -2) { return 0; diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index e5b6cf7c3..908e4b9d6 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -16,8 +16,8 @@ #include "strings.h" #include "unknown_task.h" -extern const struct WindowConfig gWindowConfig_81E6D54; -extern const struct WindowConfig gWindowConfig_81E6DA8; +extern const struct WindowTemplate gWindowConfig_81E6D54; +extern const struct WindowTemplate gWindowConfig_81E6DA8; extern void sub_80546B8(void); @@ -310,7 +310,7 @@ void sub_80E62F8(void) case 2: InitMenuWindow(&gWindowConfig_81E6D54); InitMenuWindow(&gWindowConfig_81E6DA8); - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 3: sub_80E6424(); @@ -732,7 +732,7 @@ void sub_80E6BC0(void) { sub_80E91D4(2); DisplayYesNoMenu(23, 8, 1); - MoveMenuCursor(1); + Menu_MoveCursor(1); gEasyChatStruct->unk24++; } break; @@ -770,7 +770,7 @@ void sub_80E6C84(void) sub_80E8398(2); sub_80E91D4(3); DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(1); + Menu_MoveCursor(1); if (gEasyChatStruct->unk8 == 9 || gEasyChatStruct->unk8 == 4 || gEasyChatStruct->unk8 == 7 @@ -790,7 +790,7 @@ void sub_80E6C84(void) case 0: sub_80E91D4(4); DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(1); + Menu_MoveCursor(1); gEasyChatStruct->unk24++; break; case -1: @@ -856,7 +856,7 @@ void sub_80E6D7C(void) sub_80E91D4(1); sub_80E9744(); DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(0); + Menu_MoveCursor(0); gEasyChatStruct->unk24++; } break; @@ -1738,5 +1738,5 @@ void sub_80E81FC(void) { PlaySE(SE_SELECT); sub_80E95A4(); - MenuZeroFillWindowRect(0, 0, 29, 13); + Menu_EraseWindowRect(0, 0, 29, 13); } diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index fe3aa7cc9..5acdba04e 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1068,13 +1068,13 @@ void sub_80E91D4(u8 a) if (a == 10) { - MenuZeroFillWindowRect(3, 14, 26, 19); + Menu_EraseWindowRect(3, 14, 26, 19); sub_80E9198(10); return; } if (sub_80E91A4() == 10) - MenuDrawTextWindow(3, 14, 26, 19); + Menu_DrawStdWindowFrame(3, 14, 26, 19); sub_80E9198(a); switch (a) @@ -1175,7 +1175,7 @@ void sub_80E9368(u8 a) if (r4 != NULL) { sub_8072C74(gEasyChatStruct->unk9F8E + 3, r4, 240, 2); - MenuPrint(gEasyChatStruct->unk9F8E, 0, 0); + Menu_PrintText(gEasyChatStruct->unk9F8E, 0, 0); } else { @@ -1186,8 +1186,8 @@ void sub_80E9368(u8 a) str[2] = 0x10; str[3] = EOS; - MenuPrint(gEasyChatStruct->unk9F8E, 0, 0); - MenuPrint(gEasyChatStruct->unk9F8E, 28, 0); + Menu_PrintText(gEasyChatStruct->unk9F8E, 0, 0); + Menu_PrintText(gEasyChatStruct->unk9F8E, 28, 0); } BasicInitMenuWindow(&gWindowConfig_81E6DA8); } @@ -1259,7 +1259,7 @@ void sub_80E9620(u16 a, u16 b) { if (r10 >= gEasyChatStruct->unkA) { - MenuPrint(gUnknown_083DBEA8, r6, r7); + Menu_PrintText(gUnknown_083DBEA8, r6, r7); break; } if (gEasyChatStruct->unkC[r10] == 0xFFFF) @@ -1270,7 +1270,7 @@ void sub_80E9620(u16 a, u16 b) else { sub_80EB218(gEasyChatStruct->unk9E14, gEasyChatStruct->unkC[r10], 11); - MenuPrint(gEasyChatStruct->unk9E14, r6, r7); + Menu_PrintText(gEasyChatStruct->unk9E14, r6, r7); r6 += gEasyChatStruct->unk8C[i][j] + 11; } r10++; @@ -1337,7 +1337,7 @@ void sub_80E97C0(u16 a, u16 b) r2[2] = r1 * 8; r2[3] = EOS; - MenuPrint(gEasyChatStruct->unk9E6E, b, a); + Menu_PrintText(gEasyChatStruct->unk9E6E, b, a); a += 2; } @@ -1378,7 +1378,7 @@ void sub_80E98C4(void) default: return; } - MenuFillWindowRectWithBlankTile(2, r1, 27, r3 * 2 + r1 - 1); + Menu_BlankWindowRect(2, r1, 27, r3 * 2 + r1 - 1); BasicInitMenuWindow(&gWindowConfig_81E6DA8); } @@ -1386,7 +1386,7 @@ void sub_80E9940(u8 *a, u8 b) { u8 r4 = (b & 7); - MenuFillWindowRectWithBlankTile(2, r4 * 2, 31, r4 * 2 + 1); + Menu_BlankWindowRect(2, r4 * 2, 31, r4 * 2 + 1); sub_80E9A7C(a, b); sub_80E9A60(a, 2, r4 * 2); } @@ -1453,7 +1453,7 @@ void sub_80E9A4C(void) void sub_80E9A60(const u8 *a, u16 b, u16 c) { c &= 0xF; - MenuPrint(a, b, c); + Menu_PrintText(a, b, c); } void sub_80E9A7C(u8 *dest, u16 b) @@ -1523,7 +1523,7 @@ void sub_80E9AF8(u16 a) void sub_80E9C74(u16 a) { a &= 7; - MenuFillWindowRectWithBlankTile(0, a * 2, 29, a * 2 + 1); + Menu_BlankWindowRect(0, a * 2, 29, a * 2 + 1); } void sub_80E9C94(void) diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 3187de7ed..b12ee38ce 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -109,13 +109,13 @@ static void sub_8082CD4(u8 arg0, u8 arg1) static void sub_8082D18(u32 value) { ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); - MenuDrawTextWindow(18, 10, 28, 13); + Menu_DrawStdWindowFrame(18, 10, 28, 13); sub_8072BD8(gOtherText_PLink, 19, 11, 72); } static void sub_8082D4C() { - MenuZeroFillWindowRect(18, 10, 28, 13); + Menu_EraseWindowRect(18, 10, 28, 13); } static void sub_8082D60(u8 taskId, u8 arg1) @@ -790,7 +790,7 @@ static void sub_80839DC(u8 taskId) case 3: sub_8055588(); HideFieldMessageBox(); - MenuZeroFillScreen(); + Menu_EraseScreen(); DestroyTask(taskId); EnableBothScriptContexts(); break; diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index 12cde22a7..ae6c85180 100644 --- a/src/engine/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c @@ -41,10 +41,10 @@ static void Task_InitMenu(u8 taskId) REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; SetVBlankCallback(VBlankCB_ClearSaveDataScreen); - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gSystemText_ClearAllSaveDataPrompt, 3, 15); + Menu_DrawStdWindowFrame(2, 14, 27, 19); + Menu_PrintText(gSystemText_ClearAllSaveDataPrompt, 3, 15); - MenuDrawTextWindow(2, 1, 8, 6); + Menu_DrawStdWindowFrame(2, 1, 8, 6); PrintMenuItems(3, 2, 2, gMenuYesNoItems); InitMenu(0, 3, 2, 2, 1, 5); diff --git a/src/engine/link.c b/src/engine/link.c index 28323207c..a2df02b5f 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -239,7 +239,7 @@ void LinkTestScreen(void) ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); ResetBlockSend(); gLinkType = 0x1111; OpenLink(); @@ -1237,8 +1237,8 @@ void CB2_LinkError(void) ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); SetUpWindowConfig(&gWindowConfig_81E7198); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E7198); - MenuZeroFillScreen(); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E7198); + Menu_EraseScreen(); REG_BLDALPHA = 0; REG_BG0VOFS = 0; REG_BG0HOFS = 0; diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 909b5676b..623969802 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -234,7 +234,7 @@ u32 InitMainMenu(u8 a1) ResetSpriteData(); FreeAllSpritePalettes(); SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); if (a1) BeginNormalPaletteFade(-1, 0, 0x10, 0, 0x0000); // fade to black @@ -293,7 +293,7 @@ void Task_MainMenuCheckSave(u8 taskId) gTasks[taskId].func = Task_MainMenuCheckRtc; break; case 2: - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gSaveFileDeletedMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); @@ -301,7 +301,7 @@ void Task_MainMenuCheckSave(u8 taskId) gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; break; case 255: - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gSaveFileCorruptMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); @@ -319,7 +319,7 @@ void Task_MainMenuCheckSave(u8 taskId) gTasks[taskId].func = Task_MainMenuCheckRtc; break; case 4: - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gBoardNotInstalledMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); @@ -331,11 +331,11 @@ void Task_MainMenuCheckSave(u8 taskId) void Task_MainMenuWaitForSaveErrorAck(u8 taskId) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { if (gMain.newKeys & A_BUTTON) { - MenuZeroFillWindowRect(2, 14, 27, 19); + Menu_EraseWindowRect(2, 14, 27, 19); gTasks[taskId].func = Task_MainMenuCheckRtc; } } @@ -359,7 +359,7 @@ void Task_MainMenuCheckRtc(u8 taskId) } else { - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gBatteryDryMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); @@ -370,11 +370,11 @@ void Task_MainMenuCheckRtc(u8 taskId) void Task_MainMenuWaitForRtcErrorAck(u8 taskId) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { if ( gMain.newKeys & 1 ) { - MenuZeroFillWindowRect(2, 14, 27, 19); + Menu_EraseWindowRect(2, 14, 27, 19); gTasks[taskId].func = Task_MainMenuDraw; } } @@ -412,28 +412,28 @@ void Task_MainMenuDraw(u8 taskId) { case HAS_NO_SAVED_GAME: default: - MenuDrawTextWindow(1, 0, 28, 3); + Menu_DrawStdWindowFrame(1, 0, 28, 3); PrintMainMenuItem(gMainMenuString_NewGame, 2, 1); - MenuDrawTextWindow(1, 4, 28, 7); + Menu_DrawStdWindowFrame(1, 4, 28, 7); PrintMainMenuItem(gMainMenuString_Option, 2, 5); break; case HAS_SAVED_GAME: - MenuDrawTextWindow(1, 0, 28, 7); + Menu_DrawStdWindowFrame(1, 0, 28, 7); PrintMainMenuItem(gMainMenuString_Continue, 2, 1); - MenuDrawTextWindow(1, 8, 28, 11); + Menu_DrawStdWindowFrame(1, 8, 28, 11); PrintMainMenuItem(gMainMenuString_NewGame, 2, 9); - MenuDrawTextWindow(1, 12, 28, 15); + Menu_DrawStdWindowFrame(1, 12, 28, 15); PrintMainMenuItem(gMainMenuString_Option, 2, 13); PrintSaveFileInfo(); break; case HAS_MYSTERY_GIFT: - MenuDrawTextWindow(1, 0, 28, 7); + Menu_DrawStdWindowFrame(1, 0, 28, 7); PrintMainMenuItem(gMainMenuString_Continue, 2, 1); - MenuDrawTextWindow(1, 8, 28, 11); + Menu_DrawStdWindowFrame(1, 8, 28, 11); PrintMainMenuItem(gMainMenuString_NewGame, 2, 9); - MenuDrawTextWindow(1, 12, 28, 15); + Menu_DrawStdWindowFrame(1, 12, 28, 15); PrintMainMenuItem(gMainMenuString_MysteryEvents, 2, 13); - MenuDrawTextWindow(1, 16, 28, 19); + Menu_DrawStdWindowFrame(1, 16, 28, 19); PrintMainMenuItem(gMainMenuString_Option, 2, 0x11); PrintSaveFileInfo(); break; @@ -681,7 +681,7 @@ void PrintMainMenuItem(const u8 *text, u8 left, u8 top) buffer[29] = EOS; - MenuPrint(buffer, left, top); + Menu_PrintText(buffer, left, top); } void PrintSaveFileInfo(void) @@ -694,8 +694,8 @@ void PrintSaveFileInfo(void) void PrintPlayerName(void) { - MenuPrint(gMainMenuString_Player, 2, 3); - MenuPrint(gSaveBlock2.playerName, 9, 3); + Menu_PrintText(gMainMenuString_Player, 2, 3); + Menu_PrintText(gSaveBlock2.playerName, 9, 3); } void PrintPlayTime(void) @@ -704,15 +704,15 @@ void PrintPlayTime(void) u8 alignedPlayTime[32]; #if defined(ENGLISH) - MenuPrint(gMainMenuString_Time, 16, 3); + Menu_PrintText(gMainMenuString_Time, 16, 3); FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); sub_8072C74(alignedPlayTime, playTime, 48, 1); - MenuPrint(alignedPlayTime, 22, 3); + Menu_PrintText(alignedPlayTime, 22, 3); #elif defined(GERMAN) MenuPrint_PixelCoords(gMainMenuString_Time, 124, 24, TRUE); FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); sub_8072C74(alignedPlayTime, playTime, 40, 1); - MenuPrint(alignedPlayTime, 23, 3); + Menu_PrintText(alignedPlayTime, 23, 3); #endif } @@ -720,9 +720,9 @@ void PrintPokedexCount(void) { u8 buffer[16]; - MenuPrint(gMainMenuString_Pokedex, 2, 5); + Menu_PrintText(gMainMenuString_Pokedex, 2, 5); sub_8072C14(buffer, GetPokedexSeenCount(), 18, 0); - MenuPrint(buffer, 9, 5); + Menu_PrintText(buffer, 9, 5); } void PrintBadgeCount(void) @@ -730,7 +730,7 @@ void PrintBadgeCount(void) u8 buffer[16]; #if defined(ENGLISH) - MenuPrint(gMainMenuString_Badges, 16, 5); + Menu_PrintText(gMainMenuString_Badges, 16, 5); #elif defined(GERMAN) MenuPrint_PixelCoords(gMainMenuString_Badges, 124, 40, TRUE); #endif @@ -751,7 +751,7 @@ void PrintBadgeCount(void) static void Task_NewGameSpeech1(u8 taskId) { SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); REG_WIN0H = 0; REG_WIN0V = 0; REG_WININ = 0; @@ -812,7 +812,7 @@ static void Task_NewGameSpeech3(u8 taskId) } else { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"Hi! Sorry to keep you waiting... //...But everyone calls me the POKEMON PROFESSOR." MenuPrintMessage(gBirchSpeech_Welcome, 3, 14); @@ -886,7 +886,7 @@ static void Task_NewGameSpeech9(u8 taskId) { if (BirchSpeechUpdateWindowText()) { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"And you are?" MenuPrintMessage(gBirchSpeech_AndYouAre, 3, 14); gTasks[taskId].func = Task_NewGameSpeech10; @@ -962,7 +962,7 @@ static void Task_NewGameSpeech13(u8 taskId) static void Task_NewGameSpeech14(u8 taskId) { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"Are you a boy? Or are you a girl?" MenuPrintMessage(gBirchSpeech_AreYouBoyOrGirl, 3, 14); gTasks[taskId].func = Task_NewGameSpeech15; @@ -988,19 +988,19 @@ static void Task_NewGameSpeech16(u8 taskId) HandleDestroyMenuCursors(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = MALE; - MenuZeroFillWindowRect(2, 4, 8, 9); + Menu_EraseWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; case FEMALE: HandleDestroyMenuCursors(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = FEMALE; - MenuZeroFillWindowRect(2, 4, 8, 9); + Menu_EraseWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; } - cursorPos = GetMenuCursorPos(); + cursorPos = Menu_GetCursorPos(); if (cursorPos != gTasks[taskId].tGenderSelection) { @@ -1062,7 +1062,7 @@ static void Task_NewGameSpeech18(u8 taskId) static void Task_NewGameSpeech19(u8 taskId) { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"All right. What's your name?" MenuPrintMessage(gBirchSpeech_WhatsYourName, 3, 14); gTasks[taskId].func = Task_NewGameSpeech20; @@ -1090,7 +1090,7 @@ static void Task_NewGameSpeech21(u8 taskId) case 4: HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - MenuZeroFillWindowRect(2, 1, 22, 12); + Menu_EraseWindowRect(2, 1, 22, 12); SetPresetPlayerName(selection); gTasks[taskId].func = Task_NewGameSpeech23; break; @@ -1102,7 +1102,7 @@ static void Task_NewGameSpeech21(u8 taskId) case -1: //B button HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - MenuZeroFillWindowRect(2, 1, 22, 12); + Menu_EraseWindowRect(2, 1, 22, 12); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu break; } @@ -1120,7 +1120,7 @@ static void Task_NewGameSpeech22(u8 taskId) static void Task_NewGameSpeech23(u8 taskId) { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"So it's (PLAYER)?" StringExpandPlaceholders(gStringVar4, gBirchSpeech_SoItsPlayer); MenuPrintMessage(gStringVar4, 3, 14); @@ -1143,7 +1143,7 @@ static void Task_NewGameSpeech25(u8 taskId) { case 0: //YES PlaySE(SE_SELECT); - MenuZeroFillWindowRect(2, 1, 8, 7); + Menu_EraseWindowRect(2, 1, 8, 7); gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); StartBackgroundFadeOut(taskId, 1); @@ -1152,7 +1152,7 @@ static void Task_NewGameSpeech25(u8 taskId) case -1: //B button case 1: //NO PlaySE(SE_SELECT); - MenuZeroFillWindowRect(2, 1, 8, 7); + Menu_EraseWindowRect(2, 1, 8, 7); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu break; } @@ -1197,7 +1197,7 @@ static void Task_NewGameSpeech27(u8 taskId) StartSpriteFadeIn(taskId, 2); StartBackgroundFadeIn(taskId, 1); - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); StringExpandPlaceholders(gStringVar4, gBirchSpeech_AhOkayYouArePlayer); //"Ah, okay! You're (PLAYER) who's moving... //...I get it now!" @@ -1267,7 +1267,7 @@ static void Task_NewGameSpeech29(u8 taskId) StartSpriteFadeIn(taskId, 2); StartBackgroundFadeIn(taskId, 1); - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); MenuPrintMessage(gBirchSpeech_AreYouReady, 3, 14); gTasks[taskId].func = Task_NewGameSpeech30; } @@ -1374,7 +1374,7 @@ void CB_ContinueNewGameSpeechPart2() AddBirchSpeechObjects(taskId); SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); if (gSaveBlock2.playerGender != MALE) { @@ -1661,7 +1661,7 @@ static void StartBackgroundFadeIn(u8 taskId, u8 interval) static void CreateGenderMenu(u8 left, u8 top) { u8 menuLeft, menuTop; - MenuDrawTextWindow(left, top, left + 6, top + 5); + Menu_DrawStdWindowFrame(left, top, left + 6, top + 5); menuLeft = left + 1; menuTop = top + 1; PrintMenuItems(menuLeft, menuTop, 2, gUnknown_081E79B0); @@ -1670,12 +1670,12 @@ static void CreateGenderMenu(u8 left, u8 top) static s8 GenderMenuProcessInput(void) { - return ProcessMenuInputNoWrap(); + return Menu_ProcessInputNoWrap(); } static void CreateNameMenu(u8 left, u8 top) { - MenuDrawTextWindow(left, top, left + 10, top + 11); + Menu_DrawStdWindowFrame(left, top, left + 10, top + 11); if (gSaveBlock2.playerGender == MALE) PrintMenuItems(left + 1, top + 1, 5, gMalePresetNames); @@ -1687,7 +1687,7 @@ static void CreateNameMenu(u8 left, u8 top) static s8 NameMenuProcessInput(void) { - return ProcessMenuInput(); + return Menu_ProcessInput(); } static void SetPresetPlayerName(u8 index) diff --git a/src/engine/menu.c b/src/engine/menu.c index 10988c1d7..fe88bf4e4 100644 --- a/src/engine/menu.c +++ b/src/engine/menu.c @@ -24,8 +24,8 @@ struct Menu u8 columnXCoords[8]; }; -static void MultistepInitMenuWindowInternal(const struct WindowConfig *, u16); -static void InitMenuWindowInternal(const struct WindowConfig *, u16); +static void MultistepInitMenuWindowInternal(const struct WindowTemplate *, u16); +static void InitMenuWindowInternal(const struct WindowTemplate *, u16); static bool8 sub_80723D4(void); static u8 sub_8072484(u8, u8, u8, u8, u8, u8, u32); static u8 sub_80724F4(u8, u8, u8, const struct MenuAction[], u8); @@ -52,7 +52,7 @@ const struct MenuAction gMenuYesNoItems[] = void CloseMenu(void) { PlaySE(SE_SELECT); - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_8064E2C(); ScriptContext2_Disable(); HandleDestroyMenuCursors(); @@ -64,22 +64,22 @@ void AppendToList(u8 *list, u8 *pindex, u32 value) (*pindex)++; } -void InitMenuWindow(const struct WindowConfig *winConfig) +void InitMenuWindow(const struct WindowTemplate *winTemplate) { - InitMenuWindowInternal(winConfig, 1); + InitMenuWindowInternal(winTemplate, 1); } -void MultistepInitMenuWindowBegin(const struct WindowConfig *winConfig) +void MultistepInitMenuWindowBegin(const struct WindowTemplate *winTemplate) { - MultistepInitMenuWindowInternal(winConfig, 1); + MultistepInitMenuWindowInternal(winTemplate, 1); } -static void MultistepInitMenuWindowInternal(const struct WindowConfig *winConfig, u16 tileOffset) +static void MultistepInitMenuWindowInternal(const struct WindowTemplate *winTemplate, u16 tileOffset) { gMenuMultistepInitState = 0; gMenuTextTileOffset = tileOffset; gMenuWindowPtr = &gMenuWindow; - InitWindowFromConfig(&gMenuWindow, winConfig); + Text_InitWindowWithTemplate(&gMenuWindow, winTemplate); } bool32 MultistepInitMenuWindowContinue(void) @@ -97,13 +97,13 @@ bool32 MultistepInitMenuWindowContinue(void) goto fail; goto next; case 3: - gMenuTextWindowContentTileOffset = SetTextWindowBaseTileNum(gMenuTextWindowTileOffset); + gMenuTextWindowContentTileOffset = TextWindow_SetBaseTileNum(gMenuTextWindowTileOffset); next: gMenuMultistepInitState++; return 0; case 4: - LoadTextWindowGraphics(gMenuWindowPtr); - gMenuMessageBoxContentTileOffset = SetMessageBoxBaseTileNum(gMenuTextWindowContentTileOffset); + TextWindow_LoadStdFrameGraphics(gMenuWindowPtr); + gMenuMessageBoxContentTileOffset = TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); return 1; default: fail: @@ -111,73 +111,73 @@ bool32 MultistepInitMenuWindowContinue(void) } } -static void InitMenuWindowInternal(const struct WindowConfig *winConfig, u16 tileOffset) +static void InitMenuWindowInternal(const struct WindowTemplate *winTemplate, u16 tileOffset) { gMenuWindowPtr = &gMenuWindow; - InitWindowFromConfig(&gMenuWindow, winConfig); + Text_InitWindowWithTemplate(&gMenuWindow, winTemplate); gMenuTextTileOffset = tileOffset; gMenuTextWindowTileOffset = InitWindowTileData(gMenuWindowPtr, gMenuTextTileOffset); - gMenuTextWindowContentTileOffset = SetTextWindowBaseTileNum(gMenuTextWindowTileOffset); - LoadTextWindowGraphics(gMenuWindowPtr); - gMenuMessageBoxContentTileOffset = SetMessageBoxBaseTileNum(gMenuTextWindowContentTileOffset); + gMenuTextWindowContentTileOffset = TextWindow_SetBaseTileNum(gMenuTextWindowTileOffset); + TextWindow_LoadStdFrameGraphics(gMenuWindowPtr); + gMenuMessageBoxContentTileOffset = TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); } -void unref_sub_8071DA4(struct WindowConfig *winConfig, u16 tileOffset) +void unref_sub_8071DA4(struct WindowTemplate *winTemplate, u16 tileOffset) { gMenuWindowPtr = &gMenuWindow; - InitWindowFromConfig(&gMenuWindow, winConfig); + Text_InitWindowWithTemplate(&gMenuWindow, winTemplate); gMenuTextWindowTileOffset = tileOffset; - gMenuTextWindowContentTileOffset = SetTextWindowBaseTileNum(gMenuTextWindowTileOffset); - LoadTextWindowGraphics(gMenuWindowPtr); - gMenuTextTileOffset = SetMessageBoxBaseTileNum(gMenuTextWindowContentTileOffset); + gMenuTextWindowContentTileOffset = TextWindow_SetBaseTileNum(gMenuTextWindowTileOffset); + TextWindow_LoadStdFrameGraphics(gMenuWindowPtr); + gMenuTextTileOffset = TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); gMenuMessageBoxContentTileOffset = InitWindowTileData(gMenuWindowPtr, gMenuTextTileOffset); } -void MenuLoadTextWindowGraphics_OverrideFrameType(u8 frameType) +void Menu_LoadStdFrameGraphicsOverrideStyle(u8 frameType) { - LoadTextWindowGraphics_OverrideFrameType(gMenuWindowPtr, frameType); + TextWindow_LoadStdFrameGraphicsOverrideStyle(gMenuWindowPtr, frameType); } -void MenuLoadTextWindowGraphics(void) +void Menu_LoadStdFrameGraphics(void) { - LoadTextWindowGraphics(gMenuWindowPtr); + TextWindow_LoadStdFrameGraphics(gMenuWindowPtr); } -void BasicInitMenuWindow(const struct WindowConfig *winConfig) +void BasicInitMenuWindow(const struct WindowTemplate *winTemplate) { - InitWindowFromConfig(gMenuWindowPtr, winConfig); + Text_InitWindowWithTemplate(gMenuWindowPtr, winTemplate); gMenuWindowPtr->tileDataStartOffset = gMenuTextTileOffset; } -void MenuPrint(const u8 *str, u8 left, u8 top) +void Menu_PrintText(const u8 *str, u8 left, u8 top) { - sub_8003460(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); + Text_InitWindowAndPrintText(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } -void MenuZeroFillWindowRect(u8 left, u8 top, u8 right, u8 bottom) +void Menu_EraseWindowRect(u8 left, u8 top, u8 right, u8 bottom) { ZeroFillWindowRect(gMenuWindowPtr, left, top, right, bottom); } -void MenuFillWindowRectWithBlankTile(u8 left, u8 top, u8 right, u8 bottom) +void Menu_BlankWindowRect(u8 left, u8 top, u8 right, u8 bottom) { - FillWindowRectWithBlankTile(gMenuWindowPtr, left, top, right, bottom); + Text_BlankWindowRect(gMenuWindowPtr, left, top, right, bottom); } -void MenuZeroFillScreen(void) +void Menu_EraseScreen(void) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); } -void MenuDrawTextWindow(u8 left, u8 top, u8 right, u8 bottom) +void Menu_DrawStdWindowFrame(u8 left, u8 top, u8 right, u8 bottom) { - DrawTextWindow(gMenuWindowPtr, left, top, right, bottom); + TextWindow_DrawStdFrame(gMenuWindowPtr, left, top, right, bottom); } void sub_8071F40(const u8 *str) { - MenuDrawTextWindow(2, 14, 28, 19); - MenuPrint(str, 3, 15); + Menu_DrawStdWindowFrame(2, 14, 28, 19); + Menu_PrintText(str, 3, 15); } void sub_8071F60(u8 a1, u8 a2, u8 a3) @@ -187,27 +187,27 @@ void sub_8071F60(u8 a1, u8 a2, u8 a3) u16 unref_sub_8071F98(u8 x, u8 y) { - return GetWindowTilemapEntry(gMenuWindowPtr, x, y); + return Text_GetWindowTilemapEntry(gMenuWindowPtr, x, y); } void unref_sub_8071FBC(u16 a1, u8 a2, u8 a3, u8 a4, u8 a5) { - DrawWindowRect(gMenuWindowPtr, a1, a2, a3, a4, a5); + Text_FillWindowBorder(gMenuWindowPtr, a1, a2, a3, a4, a5); } -void MenuDisplayMessageBox(void) +void Menu_DisplayDialogueFrame(void) { - DisplayMessageBox(gMenuWindowPtr); + TextWindow_DisplayDialogueFrame(gMenuWindowPtr); } void MenuPrintMessage(const u8 *str, u8 left, u8 top) { - sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); + Text_InitWindow8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } void MenuPrintMessageDefaultCoords(const u8 *str) { - sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15); + Text_InitWindow8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15); } void MenuSetText(const u8 *str) @@ -215,22 +215,22 @@ void MenuSetText(const u8 *str) sub_8002E90(gMenuWindowPtr, str); } -u8 MenuUpdateWindowText(void) +u8 Menu_UpdateWindowText(void) { - return sub_80035AC(gMenuWindowPtr); + return Text_UpdateWindow(gMenuWindowPtr); } u8 unref_sub_8072098(void) { - return sub_8003418(gMenuWindowPtr); + return Text_PrintWindowSimple(gMenuWindowPtr); } -void sub_80720B0(void) +void Menu_ClearWindowText(void) { - ClearWindowTextLines(gMenuWindowPtr); + Text_ClearWindow(gMenuWindowPtr); } -u8 MoveMenuCursor(s8 delta) +u8 Menu_MoveCursor(s8 delta) { s32 newPos = gMenu.cursorPos + delta; @@ -245,7 +245,7 @@ u8 MoveMenuCursor(s8 delta) return gMenu.cursorPos; } -u8 MoveMenuCursorNoWrap(s8 delta) +u8 Menu_MoveCursorNoWrap(s8 delta) { s32 newPos = gMenu.cursorPos + delta; @@ -260,12 +260,12 @@ u8 MoveMenuCursorNoWrap(s8 delta) return gMenu.cursorPos; } -u8 GetMenuCursorPos(void) +u8 Menu_GetCursorPos(void) { return gMenu.cursorPos; } -s8 ProcessMenuInput(void) +s8 Menu_ProcessInput(void) { if (gMain.newKeys & A_BUTTON) { @@ -285,20 +285,20 @@ s8 ProcessMenuInput(void) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); return -2; } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); return -2; } return -2; } -s8 ProcessMenuInputNoWrap(void) +s8 Menu_ProcessInputNoWrap(void) { u8 cursorPos = gMenu.cursorPos; @@ -319,18 +319,18 @@ s8 ProcessMenuInputNoWrap(void) if (gMain.newKeys & DPAD_UP) { - if (cursorPos != MoveMenuCursorNoWrap(-1)) + if (cursorPos != Menu_MoveCursorNoWrap(-1)) PlaySE(SE_SELECT); return -2; } else if (gMain.newKeys & DPAD_DOWN) { - if (cursorPos != MoveMenuCursorNoWrap(1)) + if (cursorPos != Menu_MoveCursorNoWrap(1)) PlaySE(SE_SELECT); return -2; } - MoveMenuCursorNoWrap(0); + Menu_MoveCursorNoWrap(0); return -2; } @@ -465,7 +465,7 @@ static u8 sub_80724F4(u8 left, u8 top, u8 menuItemCount, const struct MenuAction totalWidth = (gMenu.columnXCoords[columnCount] + 1); right = left + totalWidth; - MenuDrawTextWindow(left, top, right, bottom); + Menu_DrawStdWindowFrame(left, top, right, bottom); } return maxWidth; @@ -501,7 +501,7 @@ static void sub_8072620(u8 left, u8 top, u8 menuItemCount, const struct MenuActi u8 row = 0; u8 j; for (j = 0; i + j < menuItemCount; j += columnCount, row++) - MenuPrint(menuItems[i + j].text, left + gMenu.columnXCoords[i % columnCount], top + 2 * row); + Menu_PrintText(menuItems[i + j].text, left + gMenu.columnXCoords[i % columnCount], top + 2 * row); } } @@ -513,14 +513,14 @@ void sub_807274C(u8 left, u8 top, u8 menuItemCount, u8 a4, const struct MenuActi sub_8072620(left + 1, top + 1, menuItemCount, menuItems, columnCount); } -s8 sub_80727CC(void) +s8 Menu_ProcessInputGridLayout(void) { if (gMain.newKeys & A_BUTTON) { if (gMenu.menu_field_7) HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - return GetMenuCursorPos(); + return Menu_GetCursorPos(); } if (gMain.newKeys & B_BUTTON) @@ -568,7 +568,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m u8 i; for (i = 0; i < menuItemCount; i++) - MenuPrint(menuItems[i].text, left, top + 2 * i); + Menu_PrintText(menuItems[i].text, left, top + 2 * i); } void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) @@ -576,7 +576,7 @@ void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct Men u8 i; for (i = 0; i < menuItemCount; i++) - MenuPrint(menuItems[order[i]].text, left, top + 2 * i); + Menu_PrintText(menuItems[order[i]].text, left, top + 2 * i); } void InitYesNoMenu(u8 left, u8 top, u8 a3) @@ -587,14 +587,14 @@ void InitYesNoMenu(u8 left, u8 top, u8 a3) void DisplayYesNoMenu(u8 left, u8 top, u32 a3) { - MenuDrawTextWindow(left, top, left + 6, top + 5); + Menu_DrawStdWindowFrame(left, top, left + 6, top + 5); InitYesNoMenu(left, top, 5); gMenu.menu_field_7 = a3 ? -1 : 0; } s8 ProcessMenuInputNoWrap_(void) { - return ProcessMenuInputNoWrap(); + return Menu_ProcessInputNoWrap(); } u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4) @@ -623,7 +623,7 @@ int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) height = (height + 7) / 8; if (newlineCount < height) - MenuFillWindowRectWithBlankTile(left, top + 2 * newlineCount, left + width - 1, height + top - 1); + Menu_BlankWindowRect(left, top + 2 * newlineCount, left + width - 1, height + top - 1); } #elif GERMAN __attribute__((naked)) @@ -700,7 +700,7 @@ _08072B0C:\n\ lsls r3, 24\n\ lsrs r3, 24\n\ adds r0, r5, 0\n\ - bl MenuFillWindowRectWithBlankTile\n\ + bl Menu_BlankWindowRect\n\ _08072B3E:\n\ add sp, 0x10\n\ pop {r4-r7}\n\ @@ -720,7 +720,7 @@ void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4) u8 buffer[64]; u8 width = GetStringWidth(gMenuWindowPtr, a4); AlignString(gMenuWindowPtr, buffer, a1, width, 1); - sub_8003460(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3); + Text_InitWindowAndPrintText(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3); } void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4) @@ -753,14 +753,14 @@ u8 sub_8072CBC() return sub_8004E24(gMenuWindowPtr); } -void sub_8072CD4(u8 *a1, u8 *a2, u8 *a3) +void Menu_GetTextColors(u8 *a1, u8 *a2, u8 *a3) { - sub_8004E28(gMenuWindowPtr, a1, a2, a3); + Text_GetTextColors(gMenuWindowPtr, a1, a2, a3); } u32 MenuUpdateWindowText_OverrideLineLength(u8 lineLength) { - return sub_80037C8(gMenuWindowPtr, lineLength); + return Text_UpdateWindowOverrideLineLength(gMenuWindowPtr, lineLength); } struct Window *unref_sub_8072D0C(void) @@ -792,7 +792,7 @@ u8 InitMenu(u8 cursorSubpriority, u8 left, u8 top, u8 numChoices, u8 cursorPos, pos = 0; gMenu.cursorPos = pos; - MoveMenuCursor(0); + Menu_MoveCursor(0); return pos; } diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index b9c3d5ad8..abb912938 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -47,7 +47,7 @@ void CB2_InitMysteryEventMenu(void) SetVBlankCallback(VBlankCB); SetUpWindowConfig(&gWindowConfig_81E6CE4); InitMenuWindow(&gWindowConfig_81E6CE4); - MenuZeroFillScreen(); + Menu_EraseScreen(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; REG_BLDCNT = 0; CreateTask(Task_DestroySelf, 0); @@ -86,7 +86,7 @@ static void CB2_MysteryEventMenu(void) switch (gMain.state) { case 0: - MenuDrawTextWindow(0, 14, 29, 19); + Menu_DrawStdWindowFrame(0, 14, 29, 19); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); gMain.state++; break; @@ -97,7 +97,7 @@ static void CB2_MysteryEventMenu(void) gMain.state++; break; case 2: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gMain.state++; gLinkType = 21761; @@ -119,7 +119,7 @@ static void CB2_MysteryEventMenu(void) } break; case 4: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gMain.state++; break; #ifdef NONMATCHING @@ -135,8 +135,8 @@ static void CB2_MysteryEventMenu(void) { PlaySE(SE_SELECT); sub_8007F4C(); - MenuDrawTextWindow(6, 5, 23, 8); - MenuPrint(gSystemText_LoadingEvent, 7, 6); + Menu_DrawStdWindowFrame(6, 5, 23, 8); + Menu_PrintText(gSystemText_LoadingEvent, 7, 6); gMain.state++; } else if (gMain.newKeys & B_BUTTON) @@ -155,7 +155,7 @@ static void CB2_MysteryEventMenu(void) if (GetLinkPlayerDataExchangeStatusTimed() == 3) { sub_800832C(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; @@ -170,7 +170,7 @@ static void CB2_MysteryEventMenu(void) else { CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; @@ -195,8 +195,8 @@ static void CB2_MysteryEventMenu(void) { PlaySE(SE_SELECT); sub_8007F4C(); - MenuDrawTextWindow(6, 5, 23, 8); - MenuPrint(gSystemText_LoadingEvent, 7, 6); + Menu_DrawStdWindowFrame(6, 5, 23, 8); + Menu_PrintText(gSystemText_LoadingEvent, 7, 6); gMain.state++; } else if (gMain.newKeys & B_BUTTON) @@ -219,7 +219,7 @@ static void CB2_MysteryEventMenu(void) if (GetLinkPlayerDataExchangeStatusTimed() == 3) { sub_800832C(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); ptr = (u8 *)&gMain; @@ -245,7 +245,7 @@ static void CB2_MysteryEventMenu(void) else { CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); label: GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); @@ -266,7 +266,7 @@ static void CB2_MysteryEventMenu(void) break; #endif case 7: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gMain.state++; break; case 8: @@ -297,8 +297,8 @@ static void CB2_MysteryEventMenu(void) gMain.state++; break; case 13: - MenuZeroFillWindowRect(6, 5, 23, 8); - if (MenuUpdateWindowText()) + Menu_EraseWindowRect(6, 5, 23, 8); + if (Menu_UpdateWindowText()) { gMain.state++; gUnknown_02039338 = 0; @@ -326,7 +326,7 @@ static void CB2_MysteryEventMenu(void) if (!IsLinkMaster()) { CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index 440504d5a..5685584f5 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -503,7 +503,7 @@ static bool8 MainState_6(struct Task *task) static bool8 MainState_UpdateSentToPCMessage(struct Task *task) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) namingScreenDataPtr->state++; return FALSE; } @@ -1611,7 +1611,7 @@ static void DisplaySentToPCMessage(void) StringCopy(gStringVar1, namingScreenDataPtr->destBuffer); StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC); BasicInitMenuWindow(&gWindowConfig_81E6E88); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); MenuPrintMessageDefaultCoords(gStringVar4); } @@ -1757,7 +1757,7 @@ static void (*const gUnknown_083CE310[][2])(void) = sub_80B7844, }; -static const struct WindowConfig *const gUnknown_083CE328[][2][2] = +static const struct WindowTemplate *const gUnknown_083CE328[][2][2] = { { {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8}, @@ -1838,7 +1838,7 @@ static void PrintKeyboardCharacters(u8 page) //print letters on page s16 r5; for (i = 0, r5 = 9; i < 4; i++, r5 += 2) - MenuPrint(sKeyboardCharacters[page][i], 3, r5); + Menu_PrintText(sKeyboardCharacters[page][i], 3, r5); } static void sub_80B78A8(void) @@ -1846,7 +1846,7 @@ static void sub_80B78A8(void) BasicInitMenuWindow(&gWindowConfig_81E6F4C); gUnknown_083CE358[namingScreenDataPtr->templateNum](); gUnknown_083CE368[namingScreenDataPtr->template->unk3](); - MenuPrint(namingScreenDataPtr->template->title, 9, 2); + Menu_PrintText(namingScreenDataPtr->template->title, 9, 2); } static void nullsub_61(void) @@ -1870,7 +1870,7 @@ static void sub_80B7924(void) { if ((s16)namingScreenDataPtr->unk40 == MON_FEMALE) genderSymbol[0] = 0xB6; //female symbol - MenuPrint(genderSymbol, 0x14, 4); + Menu_PrintText(genderSymbol, 0x14, 4); } } @@ -1887,7 +1887,7 @@ static void sub_80B7960(void) string += 6; StringCopy(string, namingScreenDataPtr->textBuffer); BasicInitMenuWindow(&gWindowConfig_81E6F4C); - MenuPrint(gStringVar1, namingScreenDataPtr->unk2, 4); + Menu_PrintText(gStringVar1, namingScreenDataPtr->unk2, 4); } //-------------------------------------------------- diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index dfc49b035..f35ed5b5a 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -173,17 +173,17 @@ void CB2_InitOptionMenu(void) gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode; gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType; - MenuDrawTextWindow(2, 0, 27, 3); - MenuDrawTextWindow(2, 4, 27, 19); - - MenuPrint(gSystemText_OptionMenu, 4, 1); - MenuPrint(gSystemText_TextSpeed, 4, 5); - MenuPrint(gSystemText_BattleScene, 4, 7); - MenuPrint(gSystemText_BattleStyle, 4, 9); - MenuPrint(gSystemText_Sound, 4, 11); - MenuPrint(gSystemText_ButtonMode, 4, 13); - MenuPrint(gSystemText_Frame, 4, 15); - MenuPrint(gSystemText_Cancel, 4, 17); + Menu_DrawStdWindowFrame(2, 0, 27, 3); + Menu_DrawStdWindowFrame(2, 4, 27, 19); + + Menu_PrintText(gSystemText_OptionMenu, 4, 1); + Menu_PrintText(gSystemText_TextSpeed, 4, 5); + Menu_PrintText(gSystemText_BattleScene, 4, 7); + Menu_PrintText(gSystemText_BattleStyle, 4, 9); + Menu_PrintText(gSystemText_Sound, 4, 11); + Menu_PrintText(gSystemText_ButtonMode, 4, 13); + Menu_PrintText(gSystemText_Frame, 4, 15); + Menu_PrintText(gSystemText_Cancel, 4, 17); TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); @@ -432,11 +432,11 @@ static u8 FrameType_ProcessInput(u8 selection) { if (gMain.newKeys & DPAD_RIGHT) { - if (selection <= 18) + if (selection < 19) selection++; else selection = 0; - MenuLoadTextWindowGraphics_OverrideFrameType(selection); + Menu_LoadStdFrameGraphicsOverrideStyle(selection); } if (gMain.newKeys & DPAD_LEFT) { @@ -444,7 +444,7 @@ static u8 FrameType_ProcessInput(u8 selection) selection--; else selection = 19; - MenuLoadTextWindowGraphics_OverrideFrameType(selection); + Menu_LoadStdFrameGraphicsOverrideStyle(selection); } return selection; } @@ -478,8 +478,8 @@ static void FrameType_DrawChoices(u8 selection) } text[i] = EOS; - MenuPrint(gSystemText_Type, 15, 15); - MenuPrint(text, 18, 15); + Menu_PrintText(gSystemText_Type, 15, 15); + Menu_PrintText(text, 18, 15); } #elif GERMAN __attribute__((naked)) @@ -536,7 +536,7 @@ _0808C380:\n\ mov r0, sp\n\ movs r1, 0xF\n\ movs r2, 0xF\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ add sp, 0x10\n\ pop {r4-r6}\n\ pop {r0}\n\ diff --git a/src/engine/record_mixing.c b/src/engine/record_mixing.c index c8e2e34d5..75ca92e6a 100644 --- a/src/engine/record_mixing.c +++ b/src/engine/record_mixing.c @@ -146,8 +146,8 @@ void Task_RecordMixing_Main(u8 taskId) { tState = 4; data[10] = sub_8083664(); - sub_80720B0(); - MenuPrint(gOtherText_MixingComplete, 2, 15); + Menu_ClearWindowText(); + Menu_PrintText(gOtherText_MixingComplete, 2, 15); data[8] = 0; } break; @@ -160,7 +160,7 @@ void Task_RecordMixing_Main(u8 taskId) if (!gTasks[data[10]].isActive) { sub_8055588(); - MenuZeroFillScreen(); + Menu_EraseScreen(); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -176,8 +176,8 @@ void sub_80B95F0(u8 taskId) { case 0: sub_80B9A78(); - MenuDisplayMessageBox(); - MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gOtherText_MixingRecordsWithFriend, 2, 15); task->data[8] = 0x708; task->tState = 400; ClearLinkCallback_2(); diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 67e146899..eb823b84b 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -267,7 +267,7 @@ void ResetRtcScreen_FreeCursorPalette(void) void ResetRtcScreen_HideChooseTimeWindow(void) { - MenuZeroFillWindowRect(3, 8, 25, 11); + Menu_EraseWindowRect(3, 8, 25, 11); } void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 seconds) @@ -286,13 +286,13 @@ void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 sec dest = ConvertIntToDecimalStringN(dest, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); dest = StringCopy(dest, gUnknown_08376500); ConvertIntToDecimalStringN(dest, seconds, STR_CONV_MODE_LEADING_ZEROS, 2); - MenuPrint(gStringVar4, x, y); + Menu_PrintText(gStringVar4, x, y); } void ResetRtcScreen_ShowChooseTimeWindow(u16 days, u8 hours, u8 minutes, u8 seconds) { - MenuDrawTextWindow(3, 8, 25, 11); - MenuPrint(gOtherText_OK, 20, 9); + Menu_DrawStdWindowFrame(3, 8, 25, 11); + Menu_PrintText(gOtherText_OK, 20, 9); ResetRtcScreen_PrintTime(4, 9, days, hours, minutes, seconds); } @@ -468,8 +468,8 @@ void VBlankCB_ResetRtcScreen(void) void ResetRtcScreen_ShowMessage(const u8 *str) { - MenuDisplayMessageBox(); - MenuPrint(str, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(str, 2, 15); } void Task_ShowResetRtcPrompt(u8 taskId) @@ -479,9 +479,9 @@ void Task_ShowResetRtcPrompt(u8 taskId) switch (data[0]) { case 0: - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 0, 20, 10); - MenuPrint(gSystemText_PresentTime, 1, 1); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 20, 10); + Menu_PrintText(gSystemText_PresentTime, 1, 1); ResetRtcScreen_PrintTime( 1, 3, @@ -489,7 +489,7 @@ void Task_ShowResetRtcPrompt(u8 taskId) gLocalTime.hours, gLocalTime.minutes, gLocalTime.seconds); - MenuPrint(gSystemText_PreviousTime, 1, 5); + Menu_PrintText(gSystemText_PreviousTime, 1, 5); ResetRtcScreen_PrintTime( 1, 7, @@ -543,7 +543,7 @@ void Task_ResetRtcScreen(u8 taskId) case 2: if (gTasks[data[1]].isActive != TRUE) { - MenuZeroFillScreen(); + Menu_EraseScreen(); ResetRtcScreen_ShowMessage(gSystemText_PleaseResetTime); gLocalTime = gSaveBlock2.lastBerryTreeUpdate; data[1] = CreateTask(Task_ResetRtc_0, 80); diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index ba2d46546..a4642d241 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -122,9 +122,9 @@ static void CB2_SaveFailedScreen(void) LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); SetUpWindowConfig(&gWindowConfig_81E6C3C); InitMenuWindow(&gWindowConfig_81E6CE4); - MenuDrawTextWindow(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); // message window - MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // message window + Menu_PrintText(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); ime = REG_IME; REG_IME = 0; @@ -158,22 +158,22 @@ static void CB2_WipeSave(void) { if (WipeSectors(gDamagedSaveSectors) != FALSE) { - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); - MenuPrint(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); + Menu_PrintText(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1); SetMainCallback2(CB2_GameplayCannotBeContinued); return; } - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); - MenuPrint(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); + Menu_PrintText(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1); HandleSavingData(gSaveFailedType); if (gDamagedSaveSectors != 0) { #ifdef BUGFIX_SAVEFAILEDSCREEN2 - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); #endif - MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); + Menu_PrintText(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); } wipeTries++; @@ -181,19 +181,19 @@ static void CB2_WipeSave(void) if (wipeTries == 3) { - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); - MenuPrint(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); + Menu_PrintText(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1); SetMainCallback2(CB2_FadeAndReturnToTitleScreen); // called again below } else { - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // no callback exists, so the game cannot continue. if (gGameContinueCallback == 0) - MenuPrint(gSystemText_SaveCompletedGameEnd, 2, MSG_WIN_TOP + 1); + Menu_PrintText(gSystemText_SaveCompletedGameEnd, 2, MSG_WIN_TOP + 1); else // callback exists, so continue - MenuPrint(gSystemText_SaveCompletedPressA, 2, MSG_WIN_TOP + 1); + Menu_PrintText(gSystemText_SaveCompletedPressA, 2, MSG_WIN_TOP + 1); } SetMainCallback2(CB2_FadeAndReturnToTitleScreen); @@ -205,8 +205,8 @@ static void CB2_GameplayCannotBeContinued(void) if (gMain.newKeys & A_BUTTON) { - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); - MenuPrint(gSystemText_GameplayEnded, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); + Menu_PrintText(gSystemText_GameplayEnded, 2, MSG_WIN_TOP + 1); SetVBlankCallback(VBlankCB); SetMainCallback2(CB2_FadeAndReturnToTitleScreen); } diff --git a/src/engine/save_menu_util.c b/src/engine/save_menu_util.c index 771cb72c7..2c5eb6afe 100644 --- a/src/engine/save_menu_util.c +++ b/src/engine/save_menu_util.c @@ -18,7 +18,7 @@ void HandleDrawSaveWindowInfo(s16 left, s16 top) if (FlagGet(FLAG_SYS_POKEDEX_GET)) { // print info + dex information. - MenuDrawTextWindow(left, top, left + width, top + 11); + Menu_DrawStdWindowFrame(left, top, left + width, top + 11); PrintSaveMapName(++left, ++top); // MAP NAME PrintSavePlayerName(left, top + 2); // PLAYER PrintSaveBadges(left, top + 4); // BADGES @@ -28,7 +28,7 @@ void HandleDrawSaveWindowInfo(s16 left, s16 top) else { // print everything besides dex. - MenuDrawTextWindow(left, top, left + width, top + 9); + Menu_DrawStdWindowFrame(left, top, left + width, top + 9); PrintSaveMapName(++left, ++top); // MAP NAME PrintSavePlayerName(left, top + 2); // PLAYER PrintSaveBadges(left, top + 4); // BADGES @@ -45,9 +45,9 @@ void HandleCloseSaveWindow(u16 left, u16 top) width = 13; if (FlagGet(FLAG_SYS_POKEDEX_GET)) - MenuZeroFillWindowRect(left, top, left + width, top + 11); + Menu_EraseWindowRect(left, top, left + width, top + 11); else - MenuZeroFillWindowRect(left, top, left + width, top + 9); + Menu_EraseWindowRect(left, top, left + width, top + 9); } /* @@ -62,7 +62,7 @@ u8 IsResizeSaveWindowEnabled(void) // i don't know what else to name it.. void PrintSavePlayerName(s16 x, s16 y) { - MenuPrint(gOtherText_Player, x, y); + Menu_PrintText(gOtherText_Player, x, y); MenuPrint_RightAligned(gSaveBlock2.playerName, x + 12, y); } @@ -71,14 +71,14 @@ void PrintSaveMapName(s16 x, s16 y) char name[32]; CopyMapName(name, gMapHeader.regionMapSectionId); - MenuPrint(name, x, y); + Menu_PrintText(name, x, y); } void PrintSaveBadges(s16 x, s16 y) { char badges[16]; - MenuPrint(gOtherText_Badges, x, y); + Menu_PrintText(gOtherText_Badges, x, y); ConvertIntToDecimalString(badges, GetBadgeCount()); MenuPrint_RightAligned(badges, x + 12, y); } @@ -87,7 +87,7 @@ void PrintSavePokedexCount(s16 x, s16 y) { char pokedex[16]; - MenuPrint(gOtherText_Pokedex, x, y); + Menu_PrintText(gOtherText_Pokedex, x, y); ConvertIntToDecimalStringN(pokedex, GetPokedexSeenCount(), 1, 3); MenuPrint_RightAligned(pokedex, x + 12, y); } @@ -96,7 +96,7 @@ void PrintSavePlayTime(s16 x, s16 y) { char playtime[16]; - MenuPrint(gOtherText_PlayTime, x, y); + Menu_PrintText(gOtherText_PlayTime, x, y); FormatPlayTime(playtime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); MenuPrint_RightAligned(playtime, x + 12, y); } diff --git a/src/engine/text.c b/src/engine/text.c index 1b158d979..2d6d95877 100644 --- a/src/engine/text.c +++ b/src/engine/text.c @@ -12,16 +12,31 @@ enum WIN_STATE_END, WIN_STATE_BEGIN, WIN_STATE_NORMAL, - WIN_STATE_INTERRUPTIBLE_PAUSE, + WIN_STATE_CHAR_DELAY, WIN_STATE_PAUSE, WIN_STATE_WAIT_BUTTON, WIN_STATE_NEWLINE, WIN_STATE_PLACEHOLDER, - WIN_STATE_PARAGRAPH, - WIN_STATE_NEWLINE_WAIT, + WIN_STATE_WAIT_CLEAR, + WIN_STATE_WAIT_SCROLL, WIN_STATE_WAIT_SOUND, }; +enum +{ + TEXT_MODE_UNKNOWN0, + TEXT_MODE_MONOSPACE, + TEXT_MODE_UNKNOWN2, // variable width? +}; + +enum +{ + WAIT_TYPE_NORMAL, // allows the player to interrupt the text delay with A or B + WAIT_TYPE_BATTLE, // disables interrupting the text delay if in a link battle + WAIT_TYPE_AUTOSCROLL, // disables interrupting the text delay + WAIT_TYPE_CONTEST, // disables interrupting the text delay if in a link contest +}; + struct Font { u32 type; @@ -66,7 +81,7 @@ static u16 LoadFixedWidthFont_Font4Latin(struct Window *, u16); static u16 LoadFixedWidthFont_Braille(struct Window *, u16); static void MultistepLoadFont_LoadGlyph(struct Window *, u16, u8); static u8 sub_8002FA0(struct Window *, const u8 *); -static u8 InterpretText(struct Window *); +static u8 PrintNextChar(struct Window *); static u8 HandleExtCtrlCode(struct Window *); static u8 UpdateWindowText(struct Window *); static u8 DrawGlyph_TextMode0(struct Window *, u32); @@ -83,26 +98,26 @@ static void AddToCursorY(struct Window *, u8); static void ClipLeft(struct Window *); static void ClipRight(struct Window *); static void InitColors(struct Window *); -static void SetBackgroundColor(struct Window *, u8); -static void SetShadowColor(struct Window *, u8); -static void SetForegroundColor(struct Window *, u8); +static void SetWindowBackgroundColor(struct Window *, u8); +static void SetWindowShadowColor(struct Window *, u8); +static void SetWindowForegroundColor(struct Window *, u8); static u8 GetTextDelay(struct Window *); -static bool8 PlayerCanInterruptWait(struct Window *); +static bool8 PlayerCanInterruptDelay(struct Window *); static void ScrollWindowTextLines(struct Window *); static void ScrollWindowTextLines_TextMode0(struct Window *); static void DoScroll_TextMode0(struct Window *, u16); -static void ScrollWindowTextLines_TextMode1(struct Window *); -static void DoScroll_TextMode1(struct Window *, u16); +static void ScrollWindowTextLines_TextModeMonospace(struct Window *); +static void DoScroll_TextModeMonospace(struct Window *, u16); static void ScrollWindowTextLines_TextMode2(struct Window *); static void DoScroll_TextMode2(struct Window *, u8); -void ClearWindowTextLines(struct Window *); +void Text_ClearWindow(struct Window *); static void ClearWindowTextLines_TextMode0_TextMode1(struct Window *, u8); static void ClearWindowTextLines_TextMode2(struct Window *, u8); static void TryEraseDownArrow(struct Window *); static u16 GetBlankTileNum(struct Window *); static u8 WaitWithDownArrow(struct Window *); static void DrawInitialDownArrow(struct Window *); -static void DrawMovingDownArrow(struct Window *); +static void UpdateDownArrowAnimation(struct Window *); static u16 GetCursorTileNum(struct Window *, u32, u32); static s32 DrawGlyphTiles(struct Window *, u32, u32); static void UpdateTilemap(struct Window *, u32); @@ -477,7 +492,7 @@ static const ShiftGlyphTileShadowedFunc sShiftGlyphTileShadowedFuncs[] = ShiftGlyphTile_ShadowedFont_Width8, }; -const struct WindowConfig gWindowConfig_81E6C3C = +const struct WindowTemplate gWindowConfig_81E6C3C = { 0, // BG number 2, // BG character base block @@ -498,7 +513,7 @@ const struct WindowConfig gWindowConfig_81E6C3C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6C58 = +const struct WindowTemplate gWindowConfig_81E6C58 = { 0, // BG number 0, // BG character base block @@ -519,7 +534,7 @@ const struct WindowConfig gWindowConfig_81E6C58 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowConfig gWindowConfig_81E6C74 = +const struct WindowTemplate gWindowConfig_81E6C74 = { 0, // BG number 0, // BG character base block @@ -540,7 +555,7 @@ const struct WindowConfig gWindowConfig_81E6C74 = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E6C90 = +const struct WindowTemplate gWindowConfig_81E6C90 = { 0, // BG number 1, // BG character base block @@ -561,7 +576,7 @@ const struct WindowConfig gWindowConfig_81E6C90 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6CAC = +const struct WindowTemplate gWindowConfig_81E6CAC = { 0, // BG number 0, // BG character base block @@ -582,7 +597,7 @@ const struct WindowConfig gWindowConfig_81E6CAC = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E6CC8 = +const struct WindowTemplate gWindowConfig_81E6CC8 = { 2, // BG number 2, // BG character base block @@ -603,7 +618,7 @@ const struct WindowConfig gWindowConfig_81E6CC8 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E6CE4 = +const struct WindowTemplate gWindowConfig_81E6CE4 = { 0, // BG number 2, // BG character base block @@ -624,7 +639,7 @@ const struct WindowConfig gWindowConfig_81E6CE4 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D00 = +const struct WindowTemplate gWindowConfig_81E6D00 = { 0, // BG number 0, // BG character base block @@ -645,7 +660,7 @@ const struct WindowConfig gWindowConfig_81E6D00 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D1C = +const struct WindowTemplate gWindowConfig_81E6D1C = { 1, // BG number 0, // BG character base block @@ -666,7 +681,7 @@ const struct WindowConfig gWindowConfig_81E6D1C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D38 = +const struct WindowTemplate gWindowConfig_81E6D38 = { 0, // BG number 0, // BG character base block @@ -687,7 +702,7 @@ const struct WindowConfig gWindowConfig_81E6D38 = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E6D54 = +const struct WindowTemplate gWindowConfig_81E6D54 = { 3, // BG number 3, // BG character base block @@ -708,7 +723,7 @@ const struct WindowConfig gWindowConfig_81E6D54 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D70 = +const struct WindowTemplate gWindowConfig_81E6D70 = { 3, // BG number 3, // BG character base block @@ -729,7 +744,7 @@ const struct WindowConfig gWindowConfig_81E6D70 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D8C = +const struct WindowTemplate gWindowConfig_81E6D8C = { 1, // BG number 0, // BG character base block @@ -750,7 +765,7 @@ const struct WindowConfig gWindowConfig_81E6D8C = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowConfig gWindowConfig_81E6DA8 = +const struct WindowTemplate gWindowConfig_81E6DA8 = { 0, // BG number 0, // BG character base block @@ -771,7 +786,7 @@ const struct WindowConfig gWindowConfig_81E6DA8 = BG_SCREEN_ADDR(11), // tilemap }; -const struct WindowConfig WindowConfig_TrainerCard_Back_Values = +const struct WindowTemplate WindowConfig_TrainerCard_Back_Values = { 0, // BG number 2, // BG character base block @@ -792,7 +807,7 @@ const struct WindowConfig WindowConfig_TrainerCard_Back_Values = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig WindowConfig_TrainerCard_Back_Labels = +const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels = { 0, // BG number 2, // BG character base block @@ -813,7 +828,7 @@ const struct WindowConfig WindowConfig_TrainerCard_Back_Labels = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6DFC = +const struct WindowTemplate gWindowConfig_81E6DFC = { 0, // BG number 2, // BG character base block @@ -834,7 +849,7 @@ const struct WindowConfig gWindowConfig_81E6DFC = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E18 = +const struct WindowTemplate gWindowConfig_81E6E18 = { 0, // BG number 2, // BG character base block @@ -855,7 +870,7 @@ const struct WindowConfig gWindowConfig_81E6E18 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E34 = +const struct WindowTemplate gWindowConfig_81E6E34 = { 1, // BG number 0, // BG character base block @@ -876,7 +891,7 @@ const struct WindowConfig gWindowConfig_81E6E34 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E50 = +const struct WindowTemplate gWindowConfig_81E6E50 = { 0, // BG number 2, // BG character base block @@ -897,7 +912,7 @@ const struct WindowConfig gWindowConfig_81E6E50 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E6C = +const struct WindowTemplate gWindowConfig_81E6E6C = { 0, // BG number 2, // BG character base block @@ -918,7 +933,7 @@ const struct WindowConfig gWindowConfig_81E6E6C = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E88 = +const struct WindowTemplate gWindowConfig_81E6E88 = { 0, // BG number 0, // BG character base block @@ -939,7 +954,7 @@ const struct WindowConfig gWindowConfig_81E6E88 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6EA4 = +const struct WindowTemplate gWindowConfig_81E6EA4 = { 1, // BG number 0, // BG character base block @@ -960,7 +975,7 @@ const struct WindowConfig gWindowConfig_81E6EA4 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E6EC0 = +const struct WindowTemplate gWindowConfig_81E6EC0 = { 2, // BG number 2, // BG character base block @@ -981,7 +996,7 @@ const struct WindowConfig gWindowConfig_81E6EC0 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowConfig gWindowConfig_81E6EDC = +const struct WindowTemplate gWindowConfig_81E6EDC = { 1, // BG number 0, // BG character base block @@ -1002,7 +1017,7 @@ const struct WindowConfig gWindowConfig_81E6EDC = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E6EF8 = +const struct WindowTemplate gWindowConfig_81E6EF8 = { 2, // BG number 2, // BG character base block @@ -1023,7 +1038,7 @@ const struct WindowConfig gWindowConfig_81E6EF8 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F14 = +const struct WindowTemplate gWindowConfig_81E6F14 = { 1, // BG number 0, // BG character base block @@ -1044,7 +1059,7 @@ const struct WindowConfig gWindowConfig_81E6F14 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F30 = +const struct WindowTemplate gWindowConfig_81E6F30 = { 2, // BG number 2, // BG character base block @@ -1065,7 +1080,7 @@ const struct WindowConfig gWindowConfig_81E6F30 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F4C = +const struct WindowTemplate gWindowConfig_81E6F4C = { 3, // BG number 0, // BG character base block @@ -1086,7 +1101,7 @@ const struct WindowConfig gWindowConfig_81E6F4C = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F68 = +const struct WindowTemplate gWindowConfig_81E6F68 = { 0, // BG number 2, // BG character base block @@ -1107,7 +1122,7 @@ const struct WindowConfig gWindowConfig_81E6F68 = BG_SCREEN_ADDR(13), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F84 = +const struct WindowTemplate gWindowConfig_81E6F84 = { 0, // BG number 2, // BG character base block @@ -1128,7 +1143,7 @@ const struct WindowConfig gWindowConfig_81E6F84 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6FA0 = +const struct WindowTemplate gWindowConfig_81E6FA0 = { 1, // BG number 0, // BG character base block @@ -1149,7 +1164,7 @@ const struct WindowConfig gWindowConfig_81E6FA0 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowConfig gWindowConfig_81E6FBC = +const struct WindowTemplate gWindowConfig_81E6FBC = { 0, // BG number 0, // BG character base block @@ -1170,7 +1185,7 @@ const struct WindowConfig gWindowConfig_81E6FBC = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6FD8 = +const struct WindowTemplate gWindowConfig_81E6FD8 = { 0, // BG number 0, // BG character base block @@ -1191,7 +1206,7 @@ const struct WindowConfig gWindowConfig_81E6FD8 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowConfig gWindowConfig_81E6FF4 = +const struct WindowTemplate gWindowConfig_81E6FF4 = { 0, // BG number 0, // BG character base block @@ -1212,7 +1227,7 @@ const struct WindowConfig gWindowConfig_81E6FF4 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowConfig gWindowConfig_81E7010 = +const struct WindowTemplate gWindowConfig_81E7010 = { 0, // BG number 0, // BG character base block @@ -1233,7 +1248,7 @@ const struct WindowConfig gWindowConfig_81E7010 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E702C = +const struct WindowTemplate gWindowConfig_81E702C = { 3, // BG number 2, // BG character base block @@ -1254,7 +1269,7 @@ const struct WindowConfig gWindowConfig_81E702C = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E7048 = +const struct WindowTemplate gWindowConfig_81E7048 = { 2, // BG number 2, // BG character base block @@ -1275,7 +1290,7 @@ const struct WindowConfig gWindowConfig_81E7048 = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowConfig gWindowConfig_81E7064 = +const struct WindowTemplate gWindowConfig_81E7064 = { 2, // BG number 2, // BG character base block @@ -1296,7 +1311,7 @@ const struct WindowConfig gWindowConfig_81E7064 = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowConfig gWindowConfig_81E7080 = +const struct WindowTemplate gWindowConfig_81E7080 = { 3, // BG number 0, // BG character base block @@ -1317,7 +1332,7 @@ const struct WindowConfig gWindowConfig_81E7080 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E709C = +const struct WindowTemplate gWindowConfig_81E709C = { 0, // BG number 0, // BG character base block @@ -1338,7 +1353,7 @@ const struct WindowConfig gWindowConfig_81E709C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E70B8 = +const struct WindowTemplate gWindowConfig_81E70B8 = { 2, // BG number 0, // BG character base block @@ -1359,7 +1374,7 @@ const struct WindowConfig gWindowConfig_81E70B8 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E70D4 = +const struct WindowTemplate gWindowConfig_81E70D4 = { 3, // BG number 0, // BG character base block @@ -1380,7 +1395,7 @@ const struct WindowConfig gWindowConfig_81E70D4 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E70F0 = +const struct WindowTemplate gWindowConfig_81E70F0 = { 0, // BG number 0, // BG character base block @@ -1401,7 +1416,7 @@ const struct WindowConfig gWindowConfig_81E70F0 = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E710C = +const struct WindowTemplate gWindowConfig_81E710C = { 0, // BG number 0, // BG character base block @@ -1422,7 +1437,7 @@ const struct WindowConfig gWindowConfig_81E710C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7128 = +const struct WindowTemplate gWindowConfig_81E7128 = { 0, // BG number 2, // BG character base block @@ -1443,7 +1458,7 @@ const struct WindowConfig gWindowConfig_81E7128 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7144 = +const struct WindowTemplate gWindowConfig_81E7144 = { 0, // BG number 2, // BG character base block @@ -1464,7 +1479,7 @@ const struct WindowConfig gWindowConfig_81E7144 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7160 = +const struct WindowTemplate gWindowConfig_81E7160 = { 1, // BG number 1, // BG character base block @@ -1485,7 +1500,7 @@ const struct WindowConfig gWindowConfig_81E7160 = BG_SCREEN_ADDR(10), // tilemap }; -const struct WindowConfig gWindowConfig_81E717C = +const struct WindowTemplate gWindowConfig_81E717C = { 0, // BG number 3, // BG character base block @@ -1506,7 +1521,7 @@ const struct WindowConfig gWindowConfig_81E717C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7198 = +const struct WindowTemplate gWindowConfig_81E7198 = { 0, // BG number 2, // BG character base block @@ -1527,7 +1542,7 @@ const struct WindowConfig gWindowConfig_81E7198 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E71B4 = +const struct WindowTemplate gWindowConfig_81E71B4 = { 0, // BG number 2, // BG character base block @@ -1548,7 +1563,7 @@ const struct WindowConfig gWindowConfig_81E71B4 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E71D0 = +const struct WindowTemplate gWindowConfig_81E71D0 = { 1, // BG number 1, // BG character base block @@ -1569,7 +1584,7 @@ const struct WindowConfig gWindowConfig_81E71D0 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E71EC = +const struct WindowTemplate gWindowConfig_81E71EC = { 2, // BG number 1, // BG character base block @@ -1590,7 +1605,7 @@ const struct WindowConfig gWindowConfig_81E71EC = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E7208 = +const struct WindowTemplate gWindowConfig_81E7208 = { 0, // BG number 2, // BG character base block @@ -1611,7 +1626,7 @@ const struct WindowConfig gWindowConfig_81E7208 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E7224 = +const struct WindowTemplate gWindowConfig_81E7224 = { 0, // BG number 0, // BG character base block @@ -1632,7 +1647,7 @@ const struct WindowConfig gWindowConfig_81E7224 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7240 = +const struct WindowTemplate gWindowConfig_81E7240 = { 1, // BG number 2, // BG character base block @@ -1653,7 +1668,7 @@ const struct WindowConfig gWindowConfig_81E7240 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E725C = +const struct WindowTemplate gWindowConfig_81E725C = { 0, // BG number 0, // BG character base block @@ -1674,7 +1689,7 @@ const struct WindowConfig gWindowConfig_81E725C = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E7278 = +const struct WindowTemplate gWindowConfig_81E7278 = { 0, // BG number 0, // BG character base block @@ -1695,7 +1710,7 @@ const struct WindowConfig gWindowConfig_81E7278 = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E7294 = +const struct WindowTemplate gWindowConfig_81E7294 = { 0, // BG number 0, // BG character base block @@ -1716,32 +1731,32 @@ const struct WindowConfig gWindowConfig_81E7294 = NULL, // tilemap }; -static void UpdateBGRegs(const struct WindowConfig *winConfig) +static void UpdateBGRegs(const struct WindowTemplate *winTemplate) { - u8 bgNum = winConfig->bgNum; + u8 bgNum = winTemplate->bgNum; *gBGHOffsetRegs[bgNum] = 0; *gBGVOffsetRegs[bgNum] = 0; - *gBGControlRegs[bgNum] = winConfig->priority | (winConfig->screenBaseBlock << 8) | (winConfig->charBaseBlock << 2); + *gBGControlRegs[bgNum] = winTemplate->priority | (winTemplate->screenBaseBlock << 8) | (winTemplate->charBaseBlock << 2); } -static void ClearBGMem(const struct WindowConfig *winConfig) +static void ClearBGMem(const struct WindowTemplate *winTemplate) { - CpuFastFill(0, winConfig->tileData, 32); + CpuFastFill(0, winTemplate->tileData, 32); - if (winConfig->tilemap) - CpuFastFill(0, winConfig->tilemap, 0x800); + if (winTemplate->tilemap) + CpuFastFill(0, winTemplate->tilemap, 0x800); } -void LoadFontDefaultPalette(const struct WindowConfig *winConfig) +void LoadFontDefaultPalette(const struct WindowTemplate *winTemplate) { - LoadPalette(gFontDefaultPalette, 16 * winConfig->paletteNum, 32); + LoadPalette(gFontDefaultPalette, 16 * winTemplate->paletteNum, 32); } -void SetUpWindowConfig(const struct WindowConfig *winConfig) +void SetUpWindowConfig(const struct WindowTemplate *winTemplate) { - UpdateBGRegs(winConfig); - ClearBGMem(winConfig); - LoadFontDefaultPalette(winConfig); + UpdateBGRegs(winTemplate); + ClearBGMem(winTemplate); + LoadFontDefaultPalette(winTemplate); } u16 InitWindowTileData(struct Window *win, u16 startOffset) @@ -1751,13 +1766,13 @@ u16 InitWindowTileData(struct Window *win, u16 startOffset) win->tileDataStartOffset = startOffset; retVal = 0; - switch (win->config->textMode) + switch (win->template->textMode) { - case 2: + case TEXT_MODE_UNKNOWN2: retVal = InitVariableWidthFontTileData(win, startOffset); break; - case 1: - switch (win->config->fontNum) + case TEXT_MODE_MONOSPACE: + switch (win->template->fontNum) { case 0: case 3: @@ -1789,7 +1804,7 @@ static u16 InitVariableWidthFontTileData(struct Window *win, u16 startOffset) win->tileDataOffset = 2; buffer = win->tileData + 32 * win->tileDataStartOffset; CpuFastFill(0, buffer, 32); - ApplyColors_UnshadowedFont(sBlankTile, (u32 *)(buffer + 32), win->config->foregroundColor, win->config->backgroundColor); + ApplyColors_UnshadowedFont(sBlankTile, (u32 *)(buffer + 32), win->template->foregroundColor, win->template->backgroundColor); return win->tileDataStartOffset + win->tileDataOffset + win->width * win->height; } @@ -1850,15 +1865,15 @@ u32 MultistepInitWindowTileData(struct Window *win, u16 startOffset) win->tileDataStartOffset = startOffset; retVal = 0; - switch (win->config->textMode) + switch (win->template->textMode) { - case 2: + case TEXT_MODE_UNKNOWN2: retVal = InitVariableWidthFontTileData(win, startOffset); break; - case 1: + case TEXT_MODE_MONOSPACE: retVal = 256; - if (win->config->fontNum == 0 - || win->config->fontNum == 3) + if (win->template->fontNum == 0 + || win->template->fontNum == 3) retVal *= 2; break; } @@ -1870,7 +1885,7 @@ bool32 MultistepLoadFont(void) { bool32 retVal = TRUE; - if (sMultistepLoadFont_Window->config->textMode == 1) + if (sMultistepLoadFont_Window->template->textMode == TEXT_MODE_MONOSPACE) { s32 i; @@ -1890,7 +1905,7 @@ static void MultistepLoadFont_LoadGlyph(struct Window *win, u16 startOffset, u8 { u8 *buffer; - switch (win->config->fontNum) + switch (win->template->fontNum) { case 0: case 3: @@ -1923,42 +1938,42 @@ void EmptyFunc(void) { } -void InitWindowFromConfig(struct Window *win, const struct WindowConfig *winConfig) +void Text_InitWindowWithTemplate(struct Window *win, const struct WindowTemplate *winTemplate) { *win = sDefaultWindow; - win->config = (struct WindowConfig *)winConfig; - win->textMode = winConfig->textMode; - win->spacing = winConfig->spacing; - win->fontNum = winConfig->fontNum; - win->paletteNum = winConfig->paletteNum; - win->tilemapLeft = winConfig->tilemapLeft; - win->tilemapTop = winConfig->tilemapTop; - win->width = winConfig->width; - win->height = winConfig->height; - win->tileData = winConfig->tileData; - win->tilemap = winConfig->tilemap; + win->template = (struct WindowTemplate *)winTemplate; + win->textMode = winTemplate->textMode; + win->spacing = winTemplate->spacing; + win->fontNum = winTemplate->fontNum; + win->paletteNum = winTemplate->paletteNum; + win->tilemapLeft = winTemplate->tilemapLeft; + win->tilemapTop = winTemplate->tilemapTop; + win->width = winTemplate->width; + win->height = winTemplate->height; + win->tileData = winTemplate->tileData; + win->tilemap = winTemplate->tilemap; InitColors(win); - SetBackgroundColor(win, winConfig->backgroundColor); - SetShadowColor(win, winConfig->shadowColor); - SetForegroundColor(win, winConfig->foregroundColor); + SetWindowBackgroundColor(win, winTemplate->backgroundColor); + SetWindowShadowColor(win, winTemplate->shadowColor); + SetWindowForegroundColor(win, winTemplate->foregroundColor); } -void InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) +void Text_InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { - const struct WindowConfig *winConfig = win->config; - win->textMode = winConfig->textMode; - win->fontNum = winConfig->fontNum; + const struct WindowTemplate *winTemplate = win->template; + win->textMode = winTemplate->textMode; + win->fontNum = winTemplate->fontNum; win->language = GAME_LANGUAGE; - win->paletteNum = winConfig->paletteNum; + win->paletteNum = winTemplate->paletteNum; win->win_field_B = 0; win->win_field_C = 0; win->delayCounter = 0; - win->spacing = winConfig->spacing; + win->spacing = winTemplate->spacing; win->win_field_F = 0; - win->tilemapLeft = winConfig->tilemapLeft; - win->tilemapTop = winConfig->tilemapTop; - win->width = winConfig->width; - win->height = winConfig->height; + win->tilemapLeft = winTemplate->tilemapLeft; + win->tilemapTop = winTemplate->tilemapTop; + win->width = winTemplate->width; + win->height = winTemplate->height; win->text = text; win->textIndex = 0; win->tileDataStartOffset = tileDataStartOffset; @@ -1969,19 +1984,19 @@ void InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 win->cursorY = 0; win->state = WIN_STATE_BEGIN; win->downArrowCounter = 0; - win->tileData = winConfig->tileData; - win->tilemap = winConfig->tilemap; + win->tileData = winTemplate->tileData; + win->tilemap = winTemplate->tilemap; InitColors(win); - SetBackgroundColor(win, winConfig->backgroundColor); - SetShadowColor(win, winConfig->shadowColor); - SetForegroundColor(win, winConfig->foregroundColor); + SetWindowBackgroundColor(win, winTemplate->backgroundColor); + SetWindowShadowColor(win, winTemplate->shadowColor); + SetWindowForegroundColor(win, winTemplate->foregroundColor); } -void sub_8002E4C(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) +void Text_InitWindow8002E4C(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) { u8 val; - InitWindow(win, text, tileDataStartOffset, 0, 0); + Text_InitWindow(win, text, tileDataStartOffset, 0, 0); win->left = left; win->top = top; val = 0; @@ -2003,15 +2018,15 @@ void sub_8002E90(struct Window *win, const u8 *text) win->delayCounter = 0; } -void sub_8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) +void Text_InitWindow8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { gMain.watchedKeysMask = A_BUTTON | B_BUTTON; gMain.watchedKeysPressed = 0; - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; sLineLength = 26; - InitWindow(win, text, tileDataStartOffset, left, top); + Text_InitWindow(win, text, tileDataStartOffset, left, top); win->win_field_B = -1; - if (win->textMode == 0) + if (win->textMode == TEXT_MODE_UNKNOWN0) { u16 val = GetCursorTileNum(win, 0, 0); u8 *buffer = win->tileData + 32 * val; @@ -2021,9 +2036,9 @@ void sub_8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 } } -u8 sub_8002F44(struct Window *win) +u8 Text_PrintWindow8002F44(struct Window *win) { - while (win->state) + while (win->state != WIN_STATE_END) { if (win->state == WIN_STATE_NEWLINE) { @@ -2038,7 +2053,7 @@ u8 sub_8002F44(struct Window *win) sub_8002FA0(win, GetExpandedPlaceholder(win->text[win->textIndex++])); } - InterpretText(win); + PrintNextChar(win); } return 1; } @@ -2048,11 +2063,12 @@ static u8 sub_8002FA0(struct Window *win, const u8 *text) u8 retVal; u8 savedLanguage = win->language; const u8 *savedText = win->text; + u16 savedTextIndex = win->textIndex; win->text = text; win->textIndex = 0; win->state = WIN_STATE_NORMAL; - retVal = sub_8002F44(win); + retVal = Text_PrintWindow8002F44(win); win->text = savedText; win->textIndex = savedTextIndex; win->state = WIN_STATE_NORMAL; @@ -2060,32 +2076,33 @@ static u8 sub_8002FA0(struct Window *win, const u8 *text) return retVal; } -static u8 InterpretText(struct Window *win) +static u8 PrintNextChar(struct Window *win) { u8 c = win->text[win->textIndex++]; + // Handle special control characters switch (c) { - case 0xFF: + case EOS: ClipRight(win); win->state = WIN_STATE_END; return 0; - case 0xFD: + case PLACEHOLDER_BEGIN: win->state = WIN_STATE_PLACEHOLDER; return 2; - case 0xFE: + case CHAR_NEWLINE: ClipRight(win); win->state = WIN_STATE_NEWLINE; return 2; - case 0xFB: + case CHAR_PROMPT_CLEAR: DrawInitialDownArrow(win); - win->state = WIN_STATE_PARAGRAPH; + win->state = WIN_STATE_WAIT_CLEAR; return 2; - case 0xFA: + case CHAR_PROMPT_SCROLL: DrawInitialDownArrow(win); - win->state = WIN_STATE_NEWLINE_WAIT; + win->state = WIN_STATE_WAIT_SCROLL; return 2; - case 0xFC: + case EXT_CTRL_CODE_BEGIN: return HandleExtCtrlCode(win); } @@ -2093,6 +2110,8 @@ static u8 InterpretText(struct Window *win) return 1; } +// Extended 0xFC control functions + static u8 HandleExtCtrlCode(struct Window *win) { return sExtCtrlCodeFuncs[win->text[win->textIndex++]](win); @@ -2105,27 +2124,27 @@ static u8 ExtCtrlCode_Nop(struct Window *win) static u8 ExtCtrlCode_ForegroundColor(struct Window *win) { - SetForegroundColor(win, win->text[win->textIndex++]); + SetWindowForegroundColor(win, win->text[win->textIndex++]); return 2; } static u8 ExtCtrlCode_BackgroundColor(struct Window *win) { - SetBackgroundColor(win, win->text[win->textIndex++]); + SetWindowBackgroundColor(win, win->text[win->textIndex++]); return 2; } static u8 ExtCtrlCode_ShadowColor(struct Window *win) { - SetShadowColor(win, win->text[win->textIndex++]); + SetWindowShadowColor(win, win->text[win->textIndex++]); return 2; } static u8 ExtCtrlCode_AllColors(struct Window *win) { - SetForegroundColor(win, win->text[win->textIndex++]); - SetBackgroundColor(win, win->text[win->textIndex++]); - SetShadowColor(win, win->text[win->textIndex++]); + SetWindowForegroundColor(win, win->text[win->textIndex++]); + SetWindowBackgroundColor(win, win->text[win->textIndex++]); + SetWindowShadowColor(win, win->text[win->textIndex++]); return 2; } @@ -2143,7 +2162,7 @@ static u8 ExtCtrlCode_Font(struct Window *win) static u8 ExtCtrlCode_DefaultFont(struct Window *win) { - win->fontNum = win->config->fontNum; + win->fontNum = win->template->fontNum; return 2; } @@ -2197,7 +2216,7 @@ static u8 ExtCtrlCode_SetCursorY(struct Window *win) static u8 ExtCtrlCode_ClearWindowTextLines(struct Window *win) { - ClearWindowTextLines(win); + Text_ClearWindow(win); return 2; } @@ -2211,7 +2230,7 @@ static u8 ExtCtrlCode_PlaySE(struct Window *win) static void DrawSpace(struct Window *win) { - if (win->textMode == 1 || (win->left + win->cursorX) & 7 || win->spacing <= 7) + if (win->textMode == TEXT_MODE_MONOSPACE || (win->left + win->cursorX) & 7 || win->spacing <= 7) { sPrintGlyphFuncs[win->textMode](win, 0); } @@ -2302,10 +2321,11 @@ static u8 ExtCtrlCode_Latin(struct Window *win) return 2; } -u8 sub_8003418(struct Window *win) +// Prints the window text without expanding any placeholders +u8 Text_PrintWindowSimple(struct Window *win) { u8 retVal = 1; - while (win->state) + while (win->state != WIN_STATE_END) { if (win->state == WIN_STATE_NEWLINE) { @@ -2315,7 +2335,7 @@ u8 sub_8003418(struct Window *win) ClipLeft(win); win->state = WIN_STATE_NORMAL; } - if (InterpretText(win) == 1) + if (PrintNextChar(win) == 1) { retVal = 0; break; @@ -2324,10 +2344,10 @@ u8 sub_8003418(struct Window *win) return retVal; } -u8 sub_8003460(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) +u8 Text_InitWindowAndPrintText(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { - InitWindow(win, text, tileDataStartOffset, left, top); - return sub_8002F44(win); + Text_InitWindow(win, text, tileDataStartOffset, left, top); + return Text_PrintWindow8002F44(win); } u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 top) @@ -2336,8 +2356,8 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to u8 text[2]; text[0] = c; text[1] = EOS; - InitWindow(win, text, tileDataStartOffset, left, top); - retVal = InterpretText(win); + Text_InitWindow(win, text, tileDataStartOffset, left, top); + retVal = PrintNextChar(win); ClipRight(win); return retVal; } @@ -2349,35 +2369,38 @@ void sub_80034D4(u8 *tileData, const u8 *text) u8 sub_80034EC(u8 *str) { - return GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6C74, str); + return Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowConfig_81E6C74, str); } u8 *sub_8003504(u8 *dest, s32 value, u8 alignAmount, u8 alignType) { - sTempWindow.config = (struct WindowConfig *)&gWindowConfig_81E6C74; - InitWindow(&sTempWindow, 0, 0, 0, 0); + sTempWindow.template = (struct WindowTemplate *)&gWindowConfig_81E6C74; + Text_InitWindow(&sTempWindow, 0, 0, 0, 0); return AlignInt2(&sTempWindow, dest, value, alignAmount, alignType); } u8 *sub_8003558(u8 *dest, const u8 *src, u8 alignAmount, u8 alignType) { - sTempWindow.config = (struct WindowConfig *)&gWindowConfig_81E6C74; - InitWindow(&sTempWindow, src, 0, 0, 0); + sTempWindow.template = (struct WindowTemplate *)&gWindowConfig_81E6C74; + Text_InitWindow(&sTempWindow, src, 0, 0, 0); return AlignString(&sTempWindow, dest, src, alignAmount, alignType); } -u8 sub_80035AC(struct Window *win) +// Updates the window text +// The text delay can be accelerated by holding the A button +u8 Text_UpdateWindow(struct Window *win) { - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; return UpdateWindowText(win); } +// Returns TRUE when all of the text has been printed. static u8 UpdateWindowText(struct Window *win) { switch (win->state) { case WIN_STATE_WAIT_BUTTON: - if (PlayerCanInterruptWait(win)) + if (PlayerCanInterruptDelay(win)) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { @@ -2385,48 +2408,56 @@ static u8 UpdateWindowText(struct Window *win) } else { - return 0; + return FALSE; } } else { win->delayCounter--; if (win->delayCounter) - return 0; + return FALSE; } win->state = WIN_STATE_NORMAL; - return 0; - case WIN_STATE_INTERRUPTIBLE_PAUSE: - if (PlayerCanInterruptWait(win) && (gMain.heldKeys & (A_BUTTON | B_BUTTON)) && gMain.watchedKeysPressed == TRUE) + return FALSE; + case WIN_STATE_CHAR_DELAY: + // Allow the player to speed up text by holding a button + if (PlayerCanInterruptDelay(win) + && (gMain.heldKeys & (A_BUTTON | B_BUTTON)) + && gMain.watchedKeysPressed == TRUE) { win->delayCounter = 0; win->state = WIN_STATE_NORMAL; break; } + // fall through case WIN_STATE_PAUSE: + // Wait for timer to expire, then continue printing if (win->delayCounter) { win->delayCounter--; if (win->delayCounter) - return 0; + return FALSE; } - win->state = WIN_STATE_NORMAL; break; - case WIN_STATE_PARAGRAPH: - if (!WaitWithDownArrow(win)) - return 0; - ClearWindowTextLines(win); - win->state = WIN_STATE_NORMAL; - BLOCK_CROSS_JUMP - return 0; - case WIN_STATE_NEWLINE_WAIT: - if (!WaitWithDownArrow(win)) - return 0; - ScrollWindowTextLines(win); - win->state = WIN_STATE_NORMAL; - BLOCK_CROSS_JUMP - return 0; + case WIN_STATE_WAIT_CLEAR: + // Erase the text once a button is pressed + if (WaitWithDownArrow(win)) + { + Text_ClearWindow(win); + win->state = WIN_STATE_NORMAL; + asm(""); + } + return FALSE; + case WIN_STATE_WAIT_SCROLL: + // Scroll the text once a button is pressed + if (WaitWithDownArrow(win)) + { + ScrollWindowTextLines(win); + win->state = WIN_STATE_NORMAL; + asm(""); + } + return FALSE; case WIN_STATE_PLACEHOLDER: win->textIndex++; win->state = WIN_STATE_NORMAL; @@ -2434,35 +2465,35 @@ static u8 UpdateWindowText(struct Window *win) case WIN_STATE_NEWLINE: ScrollWindowTextLines(win); win->state = WIN_STATE_NORMAL; - BLOCK_CROSS_JUMP - return 0; + asm(""); + return FALSE; case WIN_STATE_BEGIN: - ClearWindowTextLines(win); + Text_ClearWindow(win); break; case WIN_STATE_WAIT_SOUND: if (IsSEPlaying()) - return 0; + return FALSE; win->state = WIN_STATE_NORMAL; break; case WIN_STATE_END: - return 1; + return TRUE; // done printing text case WIN_STATE_NORMAL: break; default: win->state = WIN_STATE_END; - return 1; + return TRUE; } - InterpretText(win); + PrintNextChar(win); switch (win->state) { case WIN_STATE_END: - return 1; + return TRUE; // done printing text case WIN_STATE_WAIT_BUTTON: - case WIN_STATE_PARAGRAPH: - case WIN_STATE_NEWLINE_WAIT: - if (PlayerCanInterruptWait(win)) + case WIN_STATE_WAIT_CLEAR: + case WIN_STATE_WAIT_SCROLL: + if (PlayerCanInterruptDelay(win)) return 0; win->delayCounter = 60; break; @@ -2471,8 +2502,9 @@ static u8 UpdateWindowText(struct Window *win) case WIN_STATE_WAIT_SOUND: break; default: - win->state = WIN_STATE_INTERRUPTIBLE_PAUSE; + win->state = WIN_STATE_CHAR_DELAY; win->delayCounter = GetTextDelay(win); + break; } return 0; @@ -2484,45 +2516,45 @@ static u8 UpdateWindowText(struct Window *win) #define SUB_800374C_LINE_LENGTH 27 #endif -u8 sub_800374C(struct Window *win) +u8 Text_UpdateWindowInBattle(struct Window *win) { u8 retVal; - sWaitType = 1; + sWaitType = WAIT_TYPE_BATTLE; sLineLength = SUB_800374C_LINE_LENGTH; retVal = UpdateWindowText(win); sLineLength = 26; - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; return retVal; } -u8 sub_8003778(struct Window *win) +u8 Text_UpdateWindowAutoscroll(struct Window *win) { u8 retVal; - sWaitType = 2; + sWaitType = WAIT_TYPE_AUTOSCROLL; sLineLength = 26; retVal = UpdateWindowText(win); - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; return retVal; } -u8 sub_80037A0(struct Window *win) +u8 Text_UpdateWindowInContest(struct Window *win) { u8 retVal; - sWaitType = 3; + sWaitType = WAIT_TYPE_CONTEST; sLineLength = 17; retVal = UpdateWindowText(win); sLineLength = 26; return retVal; } -u32 sub_80037C8(struct Window *win, u8 lineLength) +u32 Text_UpdateWindowOverrideLineLength(struct Window *win, u8 lineLength) { u8 retVal; - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; sLineLength = lineLength; retVal = UpdateWindowText(win); sLineLength = 26; @@ -2757,14 +2789,14 @@ static void ApplyColors_ShadowedFont(const void *src, void *dest, u8 foreground, static void SetCursorX(struct Window *win, u8 x) { - if (win->textMode == 0 && ((win->left + win->cursorX) & 7)) + if (win->textMode == TEXT_MODE_UNKNOWN0 && ((win->left + win->cursorX) & 7)) win->tileDataOffset += 2; win->cursorX = x; } static void AddToCursorX(struct Window *win, u8 deltaX) { - if (win->textMode == 0) + if (win->textMode == TEXT_MODE_UNKNOWN0) { u8 x = win->cursorX; win->cursorX += deltaX; @@ -2779,7 +2811,7 @@ static void AddToCursorX(struct Window *win, u8 deltaX) static void AddToCursorY(struct Window *win, u8 deltaY) { - if (win->textMode == 0 && ((win->left + win->cursorX) & 7)) + if (win->textMode == TEXT_MODE_UNKNOWN0 && ((win->left + win->cursorX) & 7)) win->tileDataOffset += 2; win->cursorY += deltaY; } @@ -2788,11 +2820,11 @@ static void EraseAtCursor(struct Window *win) { switch (win->textMode) { - case 0: - case 2: + case TEXT_MODE_UNKNOWN0: + case TEXT_MODE_UNKNOWN2: DrawGlyphTiles(win, 0, 8); break; - case 1: + case TEXT_MODE_MONOSPACE: sWriteGlyphTilemapFuncs[win->fontNum](win, 0); break; } @@ -2801,7 +2833,8 @@ static void EraseAtCursor(struct Window *win) static void ClipLeft(struct Window *win) { u32 pixel = win->left & 7; - if (win->textMode != 1 && pixel) + + if (win->textMode != TEXT_MODE_MONOSPACE && pixel) { const u32 *masks = sGlyphMasks[8][pixel]; u32 outsideMask = masks[0]; @@ -2834,32 +2867,40 @@ static void ClipRight(struct Window *win) { register u8 cursorX asm("r0") = win->cursorX; u8 left = win->left; - u32 pixel = (cursorX + left) & 7; - if (win->textMode != 1 && pixel) + u32 pixelX = (cursorX + left) & 7; + + if (win->textMode != TEXT_MODE_MONOSPACE && pixelX != 0) { - const u32 *masks = sGlyphMasks[8 - pixel][pixel]; + const u32 *masks = sGlyphMasks[8 - pixelX][pixelX]; u32 insideMask = masks[0]; u32 outside = (sGlyphBuffer.background & ~insideMask); - u16 tileNum = GetCursorTileNum(win, 0, 0); - u32 *buffer = (u32 *)(win->tileData + 32 * tileNum); - buffer[0] = (buffer[0] & insideMask) | outside; - buffer[1] = (buffer[1] & insideMask) | outside; - buffer[2] = (buffer[2] & insideMask) | outside; - buffer[3] = (buffer[3] & insideMask) | outside; - buffer[4] = (buffer[4] & insideMask) | outside; - buffer[5] = (buffer[5] & insideMask) | outside; - buffer[6] = (buffer[6] & insideMask) | outside; - buffer[7] = (buffer[7] & insideMask) | outside; + u16 tileNum; + u32 *tileData; + + tileNum = GetCursorTileNum(win, 0, 0); + tileData = (u32 *)(win->tileData + 32 * tileNum); + + tileData[0] = (tileData[0] & insideMask) | outside; + tileData[1] = (tileData[1] & insideMask) | outside; + tileData[2] = (tileData[2] & insideMask) | outside; + tileData[3] = (tileData[3] & insideMask) | outside; + tileData[4] = (tileData[4] & insideMask) | outside; + tileData[5] = (tileData[5] & insideMask) | outside; + tileData[6] = (tileData[6] & insideMask) | outside; + tileData[7] = (tileData[7] & insideMask) | outside; + tileNum = GetCursorTileNum(win, 0, 1); - buffer = (u32 *)(win->tileData + 32 * tileNum); - buffer[0] = (buffer[0] & insideMask) | outside; - buffer[1] = (buffer[1] & insideMask) | outside; - buffer[2] = (buffer[2] & insideMask) | outside; - buffer[3] = (buffer[3] & insideMask) | outside; - buffer[4] = (buffer[4] & insideMask) | outside; - buffer[5] = (buffer[5] & insideMask) | outside; - buffer[6] = (buffer[6] & insideMask) | outside; - buffer[7] = (buffer[7] & insideMask) | outside; + tileData = (u32 *)(win->tileData + 32 * tileNum); + + tileData[0] = (tileData[0] & insideMask) | outside; + tileData[1] = (tileData[1] & insideMask) | outside; + tileData[2] = (tileData[2] & insideMask) | outside; + tileData[3] = (tileData[3] & insideMask) | outside; + tileData[4] = (tileData[4] & insideMask) | outside; + tileData[5] = (tileData[5] & insideMask) | outside; + tileData[6] = (tileData[6] & insideMask) | outside; + tileData[7] = (tileData[7] & insideMask) | outside; + UpdateTilemap(win, 1); } } @@ -2876,7 +2917,7 @@ static void InitColors(struct Window *win) sGlyphBuffer.colors[i] = i; } -static void SetBackgroundColor(struct Window *win, u8 color) +static void SetWindowBackgroundColor(struct Window *win, u8 color) { u32 val1; u32 val2; @@ -2889,13 +2930,13 @@ static void SetBackgroundColor(struct Window *win, u8 color) sGlyphBuffer.background = val3; } -static void SetShadowColor(struct Window *win, u8 color) +static void SetWindowShadowColor(struct Window *win, u8 color) { win->shadowColor = color; sGlyphBuffer.colors[14] = color; } -static void SetForegroundColor(struct Window *win, u8 color) +static void SetWindowForegroundColor(struct Window *win, u8 color) { win->foregroundColor = color; sGlyphBuffer.colors[15] = color; @@ -2903,25 +2944,25 @@ static void SetForegroundColor(struct Window *win, u8 color) static u8 GetTextDelay(struct Window *win) { - if (!PlayerCanInterruptWait(win)) + if (!PlayerCanInterruptDelay(win)) return 3; return sTextSpeedDelays[gSaveBlock2.optionsTextSpeed]; } -static bool8 PlayerCanInterruptWait(struct Window *win) +static bool8 PlayerCanInterruptDelay(struct Window *win) { bool8 retVal = TRUE; switch (sWaitType) { - case 2: + case WAIT_TYPE_AUTOSCROLL: retVal = FALSE; break; - case 3: + case WAIT_TYPE_CONTEST: retVal = gIsLinkContest ? FALSE : TRUE; break; - case 1: + case WAIT_TYPE_BATTLE: retVal = (gBattleTypeFlags & BATTLE_TYPE_LINK) ? FALSE : TRUE; break; } @@ -2933,13 +2974,13 @@ static void ScrollWindowTextLines(struct Window *win) { switch (win->textMode) { - case 0: + case TEXT_MODE_UNKNOWN0: ScrollWindowTextLines_TextMode0(win); break; - case 1: - ScrollWindowTextLines_TextMode1(win); + case TEXT_MODE_MONOSPACE: + ScrollWindowTextLines_TextModeMonospace(win); break; - case 2: + case TEXT_MODE_UNKNOWN2: ScrollWindowTextLines_TextMode2(win); break; } @@ -2949,6 +2990,7 @@ static void ScrollWindowTextLines_TextMode0(struct Window *win) { if (win->cursorY == 0) { + // Advance to the next line win->tileDataOffset = 2 * sLineLength + 2; win->cursorX = 0; win->cursorY += 16; @@ -2959,7 +3001,7 @@ static void ScrollWindowTextLines_TextMode0(struct Window *win) win->tileDataOffset = 2 * sLineLength + 2; else win->tileDataOffset = 2; - win->win_field_C = win->win_field_C ^ 2; + win->win_field_C ^= 2; win->cursorX = 0; DoScroll_TextMode0(win, sLineLength); } @@ -2973,16 +3015,21 @@ static void DoScroll_TextMode0(struct Window *win, u16 lineLength) u16 fill; buffer += val1 + val2; fill = (win->paletteNum << 12) | GetBlankTileNum(win); + + // Move the bottom line up CpuCopy16(buffer + 64, buffer, lineLength * 2); CpuCopy16(buffer + 96, buffer + 32, lineLength * 2); + + // Clear the bottom line CpuFill16(fill, buffer + 64, lineLength * 2); CpuFill16(fill, buffer + 96, lineLength * 2); } -static void ScrollWindowTextLines_TextMode1(struct Window *win) +static void ScrollWindowTextLines_TextModeMonospace(struct Window *win) { if (win->cursorY == 0) { + // Advance to the next line win->cursorX = 0; win->cursorY += 16; } @@ -2990,17 +3037,21 @@ static void ScrollWindowTextLines_TextMode1(struct Window *win) { win->win_field_C ^= 2; win->cursorX = 0; - DoScroll_TextMode1(win, sLineLength); + DoScroll_TextModeMonospace(win, sLineLength); } } -static void DoScroll_TextMode1(struct Window *win, u16 lineLength) +static void DoScroll_TextModeMonospace(struct Window *win, u16 lineLength) { u16 *buffer = GetCursorTilemapPointer(win); u16 *dest = buffer - 32; u16 fill = (win->paletteNum << 12) | GetBlankTileNum(win); + + // Move the bottom line up CpuCopy16(buffer + 32, dest, lineLength * 2); CpuCopy16(buffer + 64, buffer, lineLength * 2); + + // Clear the bottom line CpuFill16(fill, buffer + 32, lineLength * 2); CpuFill16(fill, buffer + 64, lineLength * 2); } @@ -3009,6 +3060,7 @@ static void ScrollWindowTextLines_TextMode2(struct Window *win) { if (win->cursorY == 0) { + // Advance to the next line win->cursorX = 0; win->cursorY += 16; } @@ -3055,18 +3107,18 @@ static void DoScroll_TextMode2(struct Window *win, u8 lineLength) } } -void ClearWindowTextLines(struct Window *win) +void Text_ClearWindow(struct Window *win) { switch (win->textMode) { - case 0: + case TEXT_MODE_UNKNOWN0: ClearWindowTextLines_TextMode0_TextMode1(win, sLineLength); win->tileDataOffset = 2; break; - case 1: + case TEXT_MODE_MONOSPACE: ClearWindowTextLines_TextMode0_TextMode1(win, sLineLength); break; - case 2: + case TEXT_MODE_UNKNOWN2: ClearWindowTextLines_TextMode2(win, sLineLength); break; } @@ -3074,7 +3126,7 @@ void ClearWindowTextLines(struct Window *win) static void ClearWindowTextLines_TextMode0_TextMode1(struct Window *win, u8 lineLength) { - u8 i; + u8 x, y; u16 *buffer; u16 fill; @@ -3085,11 +3137,10 @@ static void ClearWindowTextLines_TextMode0_TextMode1(struct Window *win, u8 line buffer = GetCursorTilemapPointer(win); fill = GetBlankTileNum(win) | (win->paletteNum << 12); - for (i = 0; i < 4; i++) + for (y = 0; y < 4; y++) { - u8 j; - for (j = 0; j < lineLength; j++) - buffer[j] = fill; + for (x = 0; x < lineLength; x++) + buffer[x] = fill; buffer += 32; } } @@ -3114,13 +3165,13 @@ static void ClearWindowTextLines_TextMode2(struct Window *win, u8 lineLength) static void DrawDownArrow(struct Window *win) { - if (PlayerCanInterruptWait(win)) + if (PlayerCanInterruptDelay(win)) { const u32 *downArrowTiles = &sDownArrowTiles[((win->downArrowCounter & 0x0F00) >> 8) * 16]; switch (win->textMode) { - case 1: + case TEXT_MODE_MONOSPACE: { u8 *buffer; u16 tileNum = win->tileDataStartOffset + 254; @@ -3132,8 +3183,8 @@ static void DrawDownArrow(struct Window *win) WriteGlyphTilemap(win, tileNum, tileNum + 1); break; } - case 0: - case 2: + case TEXT_MODE_UNKNOWN0: + case TEXT_MODE_UNKNOWN2: { struct GlyphTileInfo glyphTileInfo; glyphTileInfo.textMode = win->textMode; @@ -3172,9 +3223,9 @@ static void DrawDownArrow(struct Window *win) static u8 WaitWithDownArrow(struct Window *win) { - u8 retVal = 1; + u8 retVal = TRUE; - if (!PlayerCanInterruptWait(win)) + if (!PlayerCanInterruptDelay(win)) { win->delayCounter--; if (!win->delayCounter) @@ -3183,8 +3234,8 @@ static u8 WaitWithDownArrow(struct Window *win) } else { - DrawMovingDownArrow(win); - retVal = 0; + UpdateDownArrowAnimation(win); + retVal = FALSE; } } else @@ -3196,8 +3247,8 @@ static u8 WaitWithDownArrow(struct Window *win) } else { - DrawMovingDownArrow(win); - retVal = 0; + UpdateDownArrowAnimation(win); + retVal = FALSE; } } @@ -3210,7 +3261,7 @@ static void DrawInitialDownArrow(struct Window *win) DrawDownArrow(win); } -static void DrawMovingDownArrow(struct Window *win) +static void UpdateDownArrowAnimation(struct Window *win) { u16 downArrowPos = (win->downArrowCounter & 0x0F00) >> 8; u16 wait = win->downArrowCounter & 0x000F; @@ -3237,31 +3288,37 @@ static void DrawMovingDownArrow(struct Window *win) static void TryEraseDownArrow(struct Window *win) { win->downArrowCounter = 0; - if (PlayerCanInterruptWait(win) == TRUE) + if (PlayerCanInterruptDelay(win) == TRUE) EraseAtCursor(win); } -u16 GetWindowTilemapEntry(struct Window *win, u8 x, u8 y) +// unused +u16 Text_GetWindowTilemapEntry(struct Window *win, u8 x, u8 y) { u16 *tilemap = win->tilemap; return tilemap[32 * y + x]; } -void DrawWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) +// unused +void Text_FillWindowBorder(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) { u8 i; u16 *buffer = &win->tilemap[top * 32]; + // Fill top border for (i = left; i <= right; i++) buffer[i] = tilemapEntry; for (i = top + 1; i < bottom - 1; i++) { buffer += 32; + // left border buffer[left] = tilemapEntry; + // right border buffer[right] = tilemapEntry; } + // Fill bottom border if (top != bottom) { buffer += 32; @@ -3270,19 +3327,21 @@ void DrawWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 ri } } +// unused void DrawWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom) { - DrawWindowRect(win, (win->paletteNum << 12) | tileNum, left, top, right, bottom); + Text_FillWindowBorder(win, (win->paletteNum << 12) | tileNum, left, top, right, bottom); } +// Fills the whole window area with tilemapEntry void FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) { u16 *buffer = &win->tilemap[top * 32]; while (top++ <= bottom) { - u8 j; - for (j = left; j <= right; j++) - buffer[j] = tilemapEntry; + u8 x; + for (x = left; x <= right; x++) + buffer[x] = tilemapEntry; buffer += 32; } } @@ -3297,7 +3356,7 @@ void ZeroFillWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom FillWindowRect_DefaultPalette(win, 0, left, top, right, bottom); } -void FillWindowRectWithBlankTile(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) +void Text_BlankWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) { u16 tileNum = GetBlankTileNum(win); FillWindowRect_DefaultPalette(win, tileNum, left, top, right, bottom); @@ -3309,12 +3368,12 @@ static u16 GetBlankTileNum(struct Window *win) switch (win->textMode) { - case 0: + case TEXT_MODE_UNKNOWN0: break; - case 2: + case TEXT_MODE_UNKNOWN2: retVal++; break; - case 1: + case TEXT_MODE_MONOSPACE: switch (win->fontNum) { case 1: @@ -3451,7 +3510,7 @@ u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT ConvertIntToDecimalString(temp, value); width = GetStringWidth(win, temp); dest = StringCopy(dest, temp); - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 17; dest[2] = alignAmount - width; dest += 3; @@ -3462,7 +3521,7 @@ u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT width = GetStringWidth(win, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 17; dest[2] = alignAmount - width; dest += 3; @@ -3474,7 +3533,7 @@ u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT width = GetStringWidth(win, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 17; dest[2] = (alignAmount - width) / 2; dest += 3; @@ -3482,7 +3541,7 @@ u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT dest = StringCopy(dest, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 17; dest[2] = (alignAmount - width) / 2; dest += 3; @@ -3500,7 +3559,7 @@ u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 { case 0: dest = StringCopy(dest, src); - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount; dest += 3; @@ -3510,7 +3569,7 @@ u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 width = GetStringWidth(win, src); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount - width; dest += 3; @@ -3521,7 +3580,7 @@ u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 width = GetStringWidth(win, src); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = (alignAmount - width) / 2; dest += 3; @@ -3529,7 +3588,7 @@ u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 dest = StringCopy(dest, src); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount; dest += 3; @@ -3544,16 +3603,16 @@ u8 GetStringWidth(struct Window *win, const u8 *s) { u8 width = 0; u8 savedFontNum = win->fontNum; - u8 savedCharset = win->language; + u8 savedLanguage = win->language; u8 savedSpacing = win->spacing; s32 i = 0; - while (s[i] != 0xFF) + while (s[i] != EOS) { u8 c = s[i]; switch (c) { - case 0xFD: + case PLACEHOLDER_BEGIN: { u8 temp; i++; @@ -3563,7 +3622,7 @@ u8 GetStringWidth(struct Window *win, const u8 *s) i++; break; } - case 0xFC: + case EXT_CTRL_CODE_BEGIN: i++; switch (s[i]) { @@ -3571,7 +3630,7 @@ u8 GetStringWidth(struct Window *win, const u8 *s) win->fontNum = s[i + 1]; break; case 7: - win->fontNum = win->config->fontNum; + win->fontNum = win->template->fontNum; break; case 0x11: width += s[i + 1]; @@ -3601,7 +3660,7 @@ u8 GetStringWidth(struct Window *win, const u8 *s) } win->spacing = savedSpacing; - win->language = savedCharset; + win->language = savedLanguage; win->fontNum = savedFontNum; return width; @@ -3609,30 +3668,30 @@ u8 GetStringWidth(struct Window *win, const u8 *s) u8 sub_8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) { - sub_8002E4C(win, text, tileDataStartOffset, left, top, a6); - return sub_8002F44(win); + Text_InitWindow8002E4C(win, text, tileDataStartOffset, left, top, a6); + return Text_PrintWindow8002F44(win); } u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { u8 width = GetStringWidth(win, text); - InitWindow(win, text, tileDataStartOffset, left - ((u32)(width + 7) >> 3), top); + Text_InitWindow(win, text, tileDataStartOffset, left - ((u32)(width + 7) >> 3), top); EraseAtCursor(win); width &= 7; if (width) width = 8 - width; sub_80048D8(win, width, 0); - return sub_8002F44(win); + return Text_PrintWindow8002F44(win); } u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6) { register u32 val asm("r5") = (u8)((a6 >> 1) - (GetStringWidth(win, text) >> 1)); left += (val >> 3); - InitWindow(win, text, tileDataStartOffset, left, top); + Text_InitWindow(win, text, tileDataStartOffset, left, top); EraseAtCursor(win); sub_80048D8(win, val & 7, 0); - return sub_8002F44(win); + return Text_PrintWindow8002F44(win); } u8 sub_8004E24(struct Window *win) @@ -3640,25 +3699,25 @@ u8 sub_8004E24(struct Window *win) return win->paletteNum; } -void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow) +void Text_GetTextColors(struct Window *win, u8 *foreground, u8 *background, u8 *shadow) { *foreground = win->foregroundColor; *background = win->backgroundColor; *shadow = win->shadowColor; } -void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text) +void sub_8004E3C(const struct WindowTemplate *winTemplate, u8 *tileData, const u8 *text) { - sTempWindow.config = winConfig; - InitWindow(&sTempWindow, text, 0, 0, 0); + sTempWindow.template = winTemplate; + Text_InitWindow(&sTempWindow, text, 0, 0, 0); sTempWindow.tileData = tileData; - sub_8002F44(&sTempWindow); + Text_PrintWindow8002F44(&sTempWindow); } -u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s) +u8 Text_GetStringWidthFromWindowTemplate(const struct WindowTemplate *winTemplate, const u8 *s) { - sTempWindow.config = winConfig; - InitWindow(&sTempWindow, s, 0, 0, 0); + sTempWindow.template = winTemplate; + Text_InitWindow(&sTempWindow, s, 0, 0, 0); return GetStringWidth(&sTempWindow, s); } @@ -3801,8 +3860,8 @@ u8 sub_8004FD0(struct Window *win, u8 *dest, const u8 *src, u16 tileDataStartOff if (endsWithoutNewline) newlineCount++; - sub_8002E4C(win, start, tileDataStartOffset, left, top, a8); - sub_8002F44(win); + Text_InitWindow8002E4C(win, start, tileDataStartOffset, left, top, a8); + Text_PrintWindow8002F44(win); return newlineCount; } @@ -3827,7 +3886,7 @@ static s32 DrawGlyphTile_UnshadowedFont(struct GlyphTileInfo *glyphTileInfo) if (glyphTileInfo->startPixel + glyphTileInfo->width > 8) { u32 mask2 = masks[1]; - if (glyphTileInfo->textMode == 2) + if (glyphTileInfo->textMode == TEXT_MODE_UNKNOWN2) { glyphBuffer->pixelRows[8] = buffer[8] & mask2; glyphBuffer->pixelRows[9] = buffer[9] & mask2; @@ -3867,7 +3926,7 @@ static s32 DrawGlyphTile_UnshadowedFont(struct GlyphTileInfo *glyphTileInfo) if (glyphTileInfo->startPixel + glyphTileInfo->width > 8) { - if (glyphTileInfo->textMode != 2) + if (glyphTileInfo->textMode != TEXT_MODE_UNKNOWN2) buffer += 8; buffer[8] = glyphBuffer->pixelRows[8]; buffer[9] = glyphBuffer->pixelRows[9]; @@ -4039,7 +4098,7 @@ static s32 DrawGlyphTile_ShadowedFont(struct GlyphTileInfo *glyphTileInfo) if (glyphTileInfo->startPixel + glyphTileInfo->width > 8) { u32 mask2 = masks[1]; - if (glyphTileInfo->textMode == 2) + if (glyphTileInfo->textMode == TEXT_MODE_UNKNOWN2) { glyphBuffer->pixelRows[8] = buffer[8] & mask2; glyphBuffer->pixelRows[9] = buffer[9] & mask2; @@ -4076,7 +4135,7 @@ static s32 DrawGlyphTile_ShadowedFont(struct GlyphTileInfo *glyphTileInfo) if (glyphTileInfo->startPixel + glyphTileInfo->width > 8) { - if (glyphTileInfo->textMode != 2) + if (glyphTileInfo->textMode != TEXT_MODE_UNKNOWN2) buffer += 8; buffer[8] = glyphBuffer->pixelRows[8]; buffer[9] = glyphBuffer->pixelRows[9]; @@ -4314,7 +4373,7 @@ static u16 GetCursorTileNum(struct Window *win, u32 xOffset, u32 yOffset) { u16 index; - if (win->textMode == 2) + if (win->textMode == TEXT_MODE_UNKNOWN2) index = win->tileDataStartOffset + win->tileDataOffset + (((win->top + win->cursorY) >> 3) + yOffset) * win->width diff --git a/src/engine/text_window.c b/src/engine/text_window.c index c001ddefc..ade349f4e 100644 --- a/src/engine/text_window.c +++ b/src/engine/text_window.c @@ -4,19 +4,22 @@ #include "palette.h" #include "text.h" -#define STD_MSG_BOX_LEFT 0 -#define STD_MSG_BOX_TOP 14 -#define STD_MSG_BOX_WIDTH 26 -#define STD_MSG_BOX_HEIGHT 4 +#define STD_WINDOW_PALETTE_NUM 14 + +// Dimensions (in tiles) of a field dialogue frame +#define STD_DLG_FRAME_LEFT 0 +#define STD_DLG_FRAME_TOP 14 +#define STD_DLG_FRAME_WIDTH 26 +#define STD_DLG_FRAME_HEIGHT 4 static void LoadTextWindowTiles(u8, void *); static void LoadTextWindowPalette(u8, u8); -static void DrawTextWindowInternal(u16 *dest, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom); -static u16 GetMessageBoxTilemapEntry(u16 tilemapEntry, u8 x, u8 y, u8 width, u8 height); -static void DrawMessageBox(struct Window *win, u8 left, u8 top, u8 width, u8 height); +static void DrawStandardFrame(u16 *dest, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom); +static u16 GetDialogueFrameTilemapEntry(u16 tilemapEntry, u8 x, u8 y, u8 width, u8 height); +static void DrawDialogueFrame(struct Window *win, u8 left, u8 top, u8 width, u8 height); static u16 sTextWindowBaseTileNum; -static u16 sMessageBoxBaseTileNum; +static u16 sDialogueFrameBaseTileNum; extern const u8 gTextWindowFrame1_Gfx[]; extern const u8 gTextWindowFrame2_Gfx[]; @@ -60,9 +63,9 @@ extern const u16 gTextWindowFrame18_Pal[]; extern const u16 gTextWindowFrame19_Pal[]; extern const u16 gTextWindowFrame20_Pal[]; -extern const u8 gMessageBox_Gfx[]; +extern const u8 gDialogueFrame_Gfx[]; -static const struct FrameGraphics gUnknown_083761F0[20] = +static const struct FrameGraphics sTextWindowFrameGraphics[20] = { {gTextWindowFrame1_Gfx, gTextWindowFrame1_Pal}, {gTextWindowFrame2_Gfx, gTextWindowFrame2_Pal}, @@ -86,7 +89,7 @@ static const struct FrameGraphics gUnknown_083761F0[20] = {gTextWindowFrame20_Gfx, gTextWindowFrame20_Pal}, }; -static const u16 gMessageBoxTilemap[5][7] = +static const u16 sDialogueFrameTilemap[5][7] = { {1, 3, 4, 4, 5, 6, 9}, {11, 9, 9, 9, 9, 0x040B, 9}, @@ -95,113 +98,124 @@ static const u16 gMessageBoxTilemap[5][7] = {0x0801, 0x0803, 0x0804, 0x0804, 0x0805, 0x0806, 9}, }; -u16 SetTextWindowBaseTileNum(u16 baseTileNum) +u16 TextWindow_SetBaseTileNum(u16 baseTileNum) { sTextWindowBaseTileNum = baseTileNum; return baseTileNum + 9; } -void LoadTextWindowGraphics(struct Window *win) +// Loads the tiles and palette of the window frame into VRAM using the selected frame type +void TextWindow_LoadStdFrameGraphics(struct Window *win) { - u8 *tileData = win->config->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; + u8 *tileData = win->template->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; LoadTextWindowTiles(gSaveBlock2.optionsWindowFrameType, tileData); - LoadTextWindowPalette(gSaveBlock2.optionsWindowFrameType, 0xE); + LoadTextWindowPalette(gSaveBlock2.optionsWindowFrameType, STD_WINDOW_PALETTE_NUM); } -void LoadTextWindowGraphics_OverridePalSlot(struct Window *win, u8 palSlot) +// Loads the tiles and palette of the window frame into VRAM with an alternate palette +void TextWindow_LoadStdFrameGraphicsOverridePal(struct Window *win, u8 palSlot) { - u8 *tileData = win->config->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; + u8 *tileData = win->template->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; LoadTextWindowTiles(gSaveBlock2.optionsWindowFrameType, tileData); LoadTextWindowPalette(gSaveBlock2.optionsWindowFrameType, palSlot); } -void LoadTextWindowGraphics_OverrideFrameType(struct Window *win, u8 frameType) +// Loads the tiles and palette of the window frame into VRAM with an alternate frame type +void TextWindow_LoadStdFrameGraphicsOverrideStyle(struct Window *win, u8 frameType) { - u8 *tileData = win->config->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; + u8 *tileData = win->template->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; LoadTextWindowTiles(frameType, tileData); - LoadTextWindowPalette(frameType, 0xE); + LoadTextWindowPalette(frameType, STD_WINDOW_PALETTE_NUM); } -void DrawTextWindow(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) +void TextWindow_DrawStdFrame(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) { - DrawTextWindowInternal(win->config->tilemap, sTextWindowBaseTileNum, left, top, right, bottom); + DrawStandardFrame(win->template->tilemap, sTextWindowBaseTileNum, left, top, right, bottom); } -const struct FrameGraphics *GetTextWindowFrameGraphics(u8 frameType) +// Returns the tile data and palette for the specified frame type +const struct FrameGraphics *TextWindow_GetFrameGraphics(u8 frameType) { if (frameType > 19) - return &gUnknown_083761F0[0]; + return &sTextWindowFrameGraphics[0]; else - return &gUnknown_083761F0[frameType]; + return &sTextWindowFrameGraphics[frameType]; } static void LoadTextWindowTiles(u8 frameType, void *dest) { - const struct FrameGraphics *frameGraphics = GetTextWindowFrameGraphics(frameType); + const struct FrameGraphics *frameGraphics = TextWindow_GetFrameGraphics(frameType); CpuFastCopy(frameGraphics->tiles, dest, 9 * TILE_SIZE_4BPP); } static void LoadTextWindowPalette(u8 frameType, u8 palSlot) { - const struct FrameGraphics *frameGraphics = GetTextWindowFrameGraphics(frameType); + const struct FrameGraphics *frameGraphics = TextWindow_GetFrameGraphics(frameType); LoadPalette(frameGraphics->palette, 16 * palSlot, 0x20); } -static void DrawTextWindowInternal(u16 *dest, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom) +// Draws a standard window frame +static void DrawStandardFrame(u16 *tilemap, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom) { + u8 startX = min(left, right); + u8 endX = max(left, right); + u8 startY = min(top, bottom); + u8 endY = max(top, bottom); u8 x, y; - u8 startX, endX; - u8 startY, endY; - - startX = (left < right) ? left : right; - endX = (right > left) ? right : left; - - startY = (top < bottom) ? top : bottom; - endY = (bottom > top) ? bottom : top; - dest[32 * startY + startX] = baseTileNum | 0xE000; + // top left corner + tilemap[32 * startY + startX] = baseTileNum | (STD_WINDOW_PALETTE_NUM << 12); + // top border for (x = startX + 1; x < endX; x++) - dest[32 * startY + x] = (baseTileNum + 1) | 0xE000; + tilemap[32 * startY + x] = (baseTileNum + 1) | (STD_WINDOW_PALETTE_NUM << 12); - dest[32 * startY + endX] = (baseTileNum + 2) | 0xE000; + // top right corner + tilemap[32 * startY + endX] = (baseTileNum + 2) | (STD_WINDOW_PALETTE_NUM << 12); for (y = startY + 1; y < endY; y++) { - dest[32 * y + startX] = (baseTileNum + 3) | 0xE000; + // left border + tilemap[32 * y + startX] = (baseTileNum + 3) | (STD_WINDOW_PALETTE_NUM << 12); + // middle for (x = startX + 1; x < endX; x++) - dest[32 * y + x] = (baseTileNum + 4) | 0xE000; + tilemap[32 * y + x] = (baseTileNum + 4) | (STD_WINDOW_PALETTE_NUM << 12); - dest[32 * y + endX] = (baseTileNum + 5) | 0xE000; + // right border + tilemap[32 * y + endX] = (baseTileNum + 5) | (STD_WINDOW_PALETTE_NUM << 12); } - dest[32 * endY + startX] = (baseTileNum + 6) | 0xE000; + // bottom left corner + tilemap[32 * endY + startX] = (baseTileNum + 6) | (STD_WINDOW_PALETTE_NUM << 12); + // bottom border for (x = startX + 1; x < endX; x++) - dest[32 * endY + x] = (baseTileNum + 7) | 0xE000; + tilemap[32 * endY + x] = (baseTileNum + 7) | (STD_WINDOW_PALETTE_NUM << 12); - dest[32 * endY + endX] = (baseTileNum + 8) | 0xE000; + // bottom right corner + tilemap[32 * endY + endX] = (baseTileNum + 8) | (STD_WINDOW_PALETTE_NUM << 12); } -u16 SetMessageBoxBaseTileNum(u16 baseTileNum) +u16 TextWindow_SetDlgFrameBaseTileNum(u16 baseTileNum) { - sMessageBoxBaseTileNum = baseTileNum; + sDialogueFrameBaseTileNum = baseTileNum; return baseTileNum + 14; } void unref_sub_80651DC(struct Window *win, u8 *text) { - sub_8002EB0(win, text, sMessageBoxBaseTileNum + 14, 2, 15); + Text_InitWindow8002EB0(win, text, sDialogueFrameBaseTileNum + 14, 2, 15); } -void DisplayMessageBox(struct Window *win) +// Loads and draws a dialogue window frame +void TextWindow_DisplayDialogueFrame(struct Window *win) { - LoadMessageBoxTiles(win); - DrawStandardMessageBox(win); + TextWindow_LoadDialogueFrameTiles(win); + TextWindow_DrawDialogueFrame(win); } -static u16 GetMessageBoxTilemapEntry(u16 baseTilemapEntry, u8 x, u8 y, u8 width, u8 height) +static u16 GetDialogueFrameTilemapEntry(u16 baseTilemapEntry, u8 x, u8 y, u8 width, u8 height) { u16 tilemapEntry = 9; @@ -215,42 +229,47 @@ static u16 GetMessageBoxTilemapEntry(u16 baseTilemapEntry, u8 x, u8 y, u8 width, else if (x > 2) x = 3; - if (x <= 6 && y <= 4) - tilemapEntry = gMessageBoxTilemap[y][x]; + if (x < 7 && y < 5) + tilemapEntry = sDialogueFrameTilemap[y][x]; tilemapEntry += baseTilemapEntry; return tilemapEntry; } -static void DrawMessageBox(struct Window *win, u8 left, u8 top, u8 width, u8 height) +static void DrawDialogueFrame(struct Window *win, u8 left, u8 top, u8 width, u8 height) { - u8 i, j; - u16 tilemapEntry = (win->paletteNum << 12) | sMessageBoxBaseTileNum; - u16 *tilemap = win->config->tilemap; + u8 x, y; + u16 baseTilemapEntry = (win->paletteNum << 12) | sDialogueFrameBaseTileNum; + u16 *tilemap = win->template->tilemap; - for (i = 0; i < height + 2; i++) - for (j = 0; j < width + 6; j++) - tilemap[(left + j) + 32 * (top + i)] = (win->paletteNum << 12) | GetMessageBoxTilemapEntry(tilemapEntry, j, i, width, height); + for (y = 0; y < height + 2; y++) + { + for (x = 0; x < width + 6; x++) + tilemap[(left + x) + 32 * (top + y)] = (win->paletteNum << 12) | GetDialogueFrameTilemapEntry(baseTilemapEntry, x, y, width, height); + } } -void DrawStandardMessageBox(struct Window *win) +// Draws an alternate styled frame used for dialogue windows that appear on the overworld +void TextWindow_DrawDialogueFrame(struct Window *win) { - DrawMessageBox(win, STD_MSG_BOX_LEFT, STD_MSG_BOX_TOP, STD_MSG_BOX_WIDTH, STD_MSG_BOX_HEIGHT); + DrawDialogueFrame(win, STD_DLG_FRAME_LEFT, STD_DLG_FRAME_TOP, STD_DLG_FRAME_WIDTH, STD_DLG_FRAME_HEIGHT); } -void LoadMessageBoxTiles(struct Window *win) +// Loads the dialogue window frame tiles into VRAM +void TextWindow_LoadDialogueFrameTiles(struct Window *win) { - u8 *tileData = win->config->tileData; - CpuFastCopy(gMessageBox_Gfx, tileData + 32 * sMessageBoxBaseTileNum, 14 * TILE_SIZE_4BPP); + u8 *tileData = win->template->tileData; + CpuFastCopy(gDialogueFrame_Gfx, tileData + 32 * sDialogueFrameBaseTileNum, 14 * TILE_SIZE_4BPP); } -void ClearStandardMessageBox(struct Window *win) +// Erases a dialogue window frame +void TextWindow_EraseDialogueFrame(struct Window *win) { u8 i; - u16 *tilemap = win->config->tilemap + (STD_MSG_BOX_TOP * 32); + u16 *tilemap = win->template->tilemap + (STD_DLG_FRAME_TOP * 32); u16 tilemapEntry = win->paletteNum << 12; - for (i = 0; i < ((STD_MSG_BOX_HEIGHT + 2) * 32); i++) + for (i = 0; i < ((STD_DLG_FRAME_HEIGHT + 2) * 32); i++) tilemap[i] = tilemapEntry; } diff --git a/src/engine/trade.c b/src/engine/trade.c index 0bc589ff4..d37b36f72 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -141,7 +141,7 @@ struct TradeEwramStruct { }; static void sub_8047EC0(void); -static void sub_804AFB8(const struct WindowConfig *, u8 *, const u8 *, u8); +static void sub_804AFB8(const struct WindowTemplate *, u8 *, const u8 *, u8); static void sub_804ACD8(const u8 *, u8 *, u8); static void nullsub_5(u8, u8); static void sub_804AA88(void); @@ -1089,10 +1089,10 @@ static void sub_8047EC0(void) SetVBlankCallback(sub_80489F4); InitMenuWindow(&gWindowConfig_81E6CE4); SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84); - gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20); - LoadTextWindowGraphics(&gUnknown_03004824->window); - MenuZeroFillScreen(); + Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); + Menu_EraseScreen(); sub_809D51C(); gUnknown_03004824->unk_0075 = 0; gUnknown_03004824->unk_007b = 0; @@ -1269,10 +1269,10 @@ static void sub_80484F4(void) SetVBlankCallback(sub_80489F4); InitMenuWindow(&gWindowConfig_81E6CE4); SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84); - gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20); - LoadTextWindowGraphics(&gUnknown_03004824->window); - MenuZeroFillScreen(); + Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); + Menu_EraseScreen(); sub_809D51C(); gUnknown_03004824->unk_0075 = 0; gUnknown_03004824->unk_007b = 0; @@ -2096,7 +2096,7 @@ static void sub_8049680(void) PlaySE(SE_SELECT); if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) { - DrawTextWindow(&gUnknown_03004824->window, 18, 14, 28, 19); + TextWindow_DrawStdFrame(&gUnknown_03004824->window, 18, 14, 28, 19); PrintMenuItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320); InitMenu(0, 19, 15, 2, 0, 9); gUnknown_03004824->unk_007b = 1; @@ -2108,7 +2108,7 @@ static void sub_8049680(void) } else if (gUnknown_03004824->tradeMenuCursorPosition == 2 * PARTY_SIZE) { - DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + TextWindow_DrawStdFrame(&gUnknown_03004824->window, 24, 14, 29, 19); InitYesNoMenu(24, 14, 4); gUnknown_03004824->unk_007b = 4; sub_804ACD8(gUnknown_0820C14C[4], BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e, 20); @@ -2138,17 +2138,17 @@ static void sub_8049860(void) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(+1); } if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (GetMenuCursorPos() == 0) + if (Menu_GetCursorPos() == 0) { BeginNormalPaletteFade(-1, 0, 0, 16, 0); gUnknown_03004824->unk_007b = 2; @@ -2239,17 +2239,17 @@ static void sub_8049AC0(void) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(+1); } if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (GetMenuCursorPos() == 0) + if (Menu_GetCursorPos() == 0) { sub_8049A20(); } @@ -2267,9 +2267,9 @@ static void sub_8049AC0(void) else if (gMain.newKeys & B_BUTTON) { sub_804AADC(3, 1); - if (GetMenuCursorPos() == 0) + if (Menu_GetCursorPos() == 0) { - gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(+1); } gUnknown_03004824->linkData[0] = 0xbbcc; Trade_SendData(gUnknown_03004824); @@ -2282,17 +2282,17 @@ static void sub_8049BC0(void) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(+1); } if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (GetMenuCursorPos() == 0) + if (Menu_GetCursorPos() == 0) { sub_804AA0C(4); gUnknown_03004824->linkData[0] = 0xeeaa; @@ -2337,7 +2337,7 @@ static void DisplayMessageAndContinueTask(void) gUnknown_03004824->unk_00b4++; if (gUnknown_03004824->unk_00b4 > 120) { - DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + TextWindow_DrawStdFrame(&gUnknown_03004824->window, 24, 14, 29, 19); InitYesNoMenu(24, 14, 4); gUnknown_03004824->unk_00b4 = 0; gUnknown_03004824->unk_007b = 3; @@ -2491,10 +2491,10 @@ static void sub_8049ED4(u8 a0) string1[3] = 0xFC; string1[4] = 0x11; string1[5] = (64 - stringLength) / 2; - sub_8003460(&gUnknown_03004824->window, string1, gUnknown_03004824->unk_007a + whichParty * 6 * 32, gUnknown_0820C334[whichParty][0], gUnknown_0820C334[whichParty][1]); + Text_InitWindowAndPrintText(&gUnknown_03004824->window, string1, gUnknown_03004824->unk_007a + whichParty * 6 * 32, gUnknown_0820C334[whichParty][0], gUnknown_0820C334[whichParty][1]); sub_804A33C(string2, whichParty, whichPokemon); - sub_8003460(&gUnknown_03004824->window, gOtherText_Terminator2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 32, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); - sub_8003460(&gUnknown_03004824->window, string2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 38, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); + Text_InitWindowAndPrintText(&gUnknown_03004824->window, gOtherText_Terminator2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 32, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); + Text_InitWindowAndPrintText(&gUnknown_03004824->window, string2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 38, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); gUnknown_03004824->unk_0080[a0] ++; break; case 4: @@ -2884,7 +2884,7 @@ static void sub_8049ED4(u8 a0) "\tldrb r1, [r1]\n" "\tstr r1, [sp]\n" "\tadd r1, sp, 0xC\n" - "\tbl sub_8003460\n" + "\tbl Text_InitWindowAndPrintText\n" "\tadd r7, sp, 0x34\n" "\tadds r0, r7, 0\n" "\tldr r1, [sp, 0x6C]\n" @@ -2910,7 +2910,7 @@ static void sub_8049ED4(u8 a0) "\tlsrs r4, 24\n" "\tstr r4, [sp]\n" "\tadds r3, r5, 0\n" - "\tbl sub_8003460\n" + "\tbl Text_InitWindowAndPrintText\n" "\tldr r0, _0804A22C @ =gUnknown_03004824\n" "\tldr r1, [r0]\n" "\tadds r0, r1, 0x4\n" @@ -2921,7 +2921,7 @@ static void sub_8049ED4(u8 a0) "\tstr r4, [sp]\n" "\tadds r1, r7, 0\n" "\tadds r3, r5, 0\n" - "\tbl sub_8003460\n" + "\tbl Text_InitWindowAndPrintText\n" "\tldr r2, _0804A22C @ =gUnknown_03004824\n" "\tldr r1, [r2]\n" "\tb _0804A28A\n" @@ -3010,7 +3010,7 @@ u8 sub_804A2B4(u8 *a0, u8 whichParty, u8 whichPokemon) GetMonGender(&gEnemyParty[whichPokemon]); GetMonData(&gEnemyParty[whichPokemon], MON_DATA_LEVEL); } - return GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, a0); + return Text_GetStringWidthFromWindowTemplate(&gWindowConfig_81E7294, a0); } #ifdef NONMATCHING @@ -3067,8 +3067,8 @@ static void sub_804A41C(u8 whichParty) GetMonData(pokemon, MON_DATA_NICKNAME, nickname); StringCopy10(string + 6, nickname); GetMonGender(pokemon); - string[5] = (50 - GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, string + 6)) / 2; - sub_8003460(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]); + string[5] = (50 - Text_GetStringWidthFromWindowTemplate(&gWindowConfig_81E7294, string + 6)) / 2; + Text_InitWindowAndPrintText(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]); } } #else @@ -3142,7 +3142,7 @@ static void sub_804A41C(u8 whichParty) "\tmov r1, sp\n" "\tadds r1, 0x22\n" "\tldr r0, _0804A518 @ =gWindowConfig_81E7294\n" - "\tbl GetStringWidthGivenWindowConfig\n" + "\tbl Text_GetStringWidthFromWindowTemplate\n" "\tlsls r0, 24\n" "\tlsrs r0, 24\n" "\tmovs r1, 0x32\n" @@ -3177,7 +3177,7 @@ static void sub_804A41C(u8 whichParty) "\tldrb r1, [r1]\n" "\tstr r1, [sp]\n" "\tmov r1, r8\n" - "\tbl sub_8003460\n" + "\tbl Text_InitWindowAndPrintText\n" "\tadds r0, r6, 0x1\n" "\tlsls r0, 24\n" "\tlsrs r6, r0, 24\n" @@ -3413,18 +3413,18 @@ static void sub_804A96C_alt(struct UnkStructD *arg0, u8 left, u8 top, const u16 static void sub_804A9F4(u8 unused) { - MenuZeroFillScreen(); + Menu_EraseScreen(); } static void sub_804AA00(u8 unused) { - MenuZeroFillScreen(); + Menu_EraseScreen(); } static void sub_804AA0C(u8 a0) { - DrawTextWindow(&gUnknown_03004824->window, gTradeMessageWindowRects[a0][0], gTradeMessageWindowRects[a0][1], gTradeMessageWindowRects[a0][2], gTradeMessageWindowRects[a0][3]); - sub_8003460(&gUnknown_03004824->window, gUnknown_0820C2F0[a0], 0x180 + gUnknown_03004824->unk_007a, gTradeMessageWindowRects[a0][0] + 1, gTradeMessageWindowRects[a0][1] + 1); + TextWindow_DrawStdFrame(&gUnknown_03004824->window, gTradeMessageWindowRects[a0][0], gTradeMessageWindowRects[a0][1], gTradeMessageWindowRects[a0][2], gTradeMessageWindowRects[a0][3]); + Text_InitWindowAndPrintText(&gUnknown_03004824->window, gUnknown_0820C2F0[a0], 0x180 + gUnknown_03004824->unk_007a, gTradeMessageWindowRects[a0][0] + 1, gTradeMessageWindowRects[a0][1] + 1); } static void sub_804AA88(void) @@ -3798,7 +3798,7 @@ static void sub_804AF84(void) gSaveBlock1.giftRibbons[i] = gUnknown_03004824->unk_00b5[i]; } -static void sub_804AFB8(const struct WindowConfig *windowConfig, u8 *dest, const u8 *src, u8 size) +static void sub_804AFB8(const struct WindowTemplate *windowConfig, u8 *dest, const u8 *src, u8 size) { u8 i; u8 *tileBuffer; @@ -4029,10 +4029,10 @@ static void sub_804B41C(void) SetVBlankCallback(sub_804B210); sub_804B228(); SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84); - gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); - LoadTextWindowGraphics(&gUnknown_03004828->window); - MenuZeroFillScreen(); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); + Menu_EraseScreen(); gLinkType = 0x1144; gMain.state ++; LZDecompressVram(gUnknown_08D00000, (void *)VRAM); @@ -4188,16 +4188,16 @@ static __attribute__((naked)) void sub_804B41C(void) "\tldr r0, [r6]\n" "\tadds r0, 0x4\n" "\tadds r1, r4, 0\n" - "\tbl InitWindowFromConfig\n" + "\tbl Text_InitWindowWithTemplate\n" "\tmovs r0, 0x2\n" - "\tbl SetTextWindowBaseTileNum\n" + "\tbl TextWindow_SetBaseTileNum\n" "\tldr r1, [r6]\n" "\tadds r1, 0x34\n" "\tstrb r0, [r1]\n" "\tldr r0, [r6]\n" "\tadds r0, 0x4\n" - "\tbl LoadTextWindowGraphics\n" - "\tbl MenuZeroFillScreen\n" + "\tbl TextWindow_LoadStdFrameGraphics\n" + "\tbl Menu_EraseScreen\n" "\tldr r1, _0804B580 @ =gLinkType\n" "\tldr r4, _0804B584 @ =0x00001144\n" "\tadds r0, r4, 0\n" @@ -4532,10 +4532,10 @@ static void sub_804B790(void) SetVBlankCallback(sub_804B210); sub_804B228(); SetUpWindowConfig(&gWindowConfig_81E717C); - InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E717C); - gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); - LoadTextWindowGraphics(&gUnknown_03004828->window); - MenuZeroFillScreen(); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E717C); + gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); + Menu_EraseScreen(); gLinkType = 0x1144; gUnknown_03004828->isLinkTrade = FALSE; gUnknown_03004828->unk_00b6 = 0; @@ -4733,7 +4733,7 @@ static void sub_804BBE8(u8 a0) for (i = 0; i < 0x280; i ++) buffer[i] |= 0x7000; DmaCopy16Defvars(3, gSharedMem, BG_SCREEN_ADDR(5), 0x500); - MenuZeroFillWindowRect(2, 15, 27, 18); + Menu_EraseWindowRect(2, 15, 27, 18); break; case 6: REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; @@ -4843,7 +4843,7 @@ static bool8 sub_804C29C(void) case 10: StringExpandPlaceholders(gStringVar4, gTradeText_WillBeSent); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c4 = 11; gUnknown_03004828->unk_00c0 = 0; break; @@ -4854,11 +4854,11 @@ static bool8 sub_804C29C(void) gUnknown_03004828->unk_00c4 ++; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_ByeBye); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); } break; case 12: - if (gSprites[gUnknown_03004828->unk_0102].callback == SpriteCallbackDummy && sub_80035AC(&gUnknown_03004828->window) == TRUE) + if (gSprites[gUnknown_03004828->unk_0102].callback == SpriteCallbackDummy && Text_UpdateWindow(&gUnknown_03004828->window) == TRUE) { gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, 0x20, 0); gSprites[gUnknown_03004828->unk_0103].callback = sub_804D738; @@ -5201,7 +5201,7 @@ static bool8 sub_804C29C(void) REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_SentOverPoke); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c4 ++; gUnknown_03004828->unk_00c0 = 0; break; @@ -5215,7 +5215,7 @@ static bool8 sub_804C29C(void) gUnknown_03004828->unk_00c4 ++; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_TakeGoodCare); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c0 = 0; } break; @@ -5538,7 +5538,7 @@ static void sub_804DC88(void) gMain.state ++; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gOtherText_LinkStandby2); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); break; case 1: sub_80084A4(); @@ -5565,7 +5565,7 @@ static void sub_804DC88(void) case 2: gMain.state = 50; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); - sub_8003460(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15); break; case 50: SetSecretBase2Field_9_AndHideBG(); diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index ffa4cbd08..da9dd7179 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -700,7 +700,7 @@ static void sub_80939DC(u8 taskId) task->data[TD_0] ^= TRUE; } TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]); - MenuPrint(buffer, 10, 12); + Menu_PrintText(buffer, 10, 12); } static void sub_8093A28(void) @@ -1130,7 +1130,7 @@ static void sub_8093DAC(void) static void sub_8093DC8(void) { - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_80940E4(); sub_8093F14(); sub_8093F80(); @@ -1141,7 +1141,7 @@ static void sub_8093DC8(void) static void sub_8093DEC(void) { - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_80940E4(); sub_8093F48(); sub_8094188(); @@ -1322,7 +1322,7 @@ static void sub_8094140(void) buffer = gStringVar1; StringCopy(buffer, ewram0_2.var_64.playerName); ConvertInternationalString(buffer, ewram0_2.language); - MenuPrint(buffer, 7, 5); + Menu_PrintText(buffer, 7, 5); TrainerCard_Front_PrintTrainerID(); TrainerCard_Front_PrintMoney(); @@ -1355,7 +1355,7 @@ static void TrainerCard_Front_PrintTrainerID(void) u8 buffer[8]; ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5); - MenuPrint(buffer, 20, 2); + Menu_PrintText(buffer, 20, 2); } static void TrainerCard_Front_PrintMoney(void) @@ -1406,14 +1406,14 @@ static void sub_809429C(void) str[0] = 00; str++; str = StringCopy(str, ewram0_2.var_20[1]); - MenuPrint(gStringVar1, 2, 14); + Menu_PrintText(gStringVar1, 2, 14); str = gStringVar1; str = StringCopy(str, ewram0_2.var_20[2]); str[0] = 00; str++; str = StringCopy(str, ewram0_2.var_20[3]); - MenuPrint(gStringVar1, 2, 16); + Menu_PrintText(gStringVar1, 2, 16); } } @@ -1437,7 +1437,7 @@ static void TrainerCard_Back_PrintName(void) static void TrainerCard_Back_PrintHallOfFameTime_Label(void) { if (ewram0_2.var_8 != 0) - MenuPrint(gOtherText_FirstHOF, 3, 5); + Menu_PrintText(gOtherText_FirstHOF, 3, 5); } static void TrainerCard_Back_PrintHallOfFameTime(void) @@ -1459,7 +1459,7 @@ static void TrainerCard_Back_PrintHallOfFameTime(void) static void TrainerCard_Back_PrintLinkBattlesLabel(void) { if (ewram0_2.var_9 != 0) - MenuPrint(gOtherText_LinkCableBattles, 3, 7); + Menu_PrintText(gOtherText_LinkCableBattles, 3, 7); } static void TrainerCard_Back_PrintLinkBattles(void) @@ -1479,7 +1479,7 @@ static void TrainerCard_Back_PrintLinkBattles(void) static void TrainerCard_Back_PrintBattleTower_Label(void) { if (ewram0_2.var_a != 0) - MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15); + Menu_PrintText(gOtherText_BattleTowerWinRecord, 3, 15); } static void TrainerCard_Back_PrintBattleTower(void) @@ -1499,7 +1499,7 @@ static void TrainerCard_Back_PrintBattleTower(void) static void TrainerCard_Back_PrintLinkContests_Label(void) { if (ewram0_2.var_b != 0) - MenuPrint(gOtherText_ContestRecord, 3, 13); + Menu_PrintText(gOtherText_ContestRecord, 3, 13); } static void TrainerCard_Back_PrintLinkContests(void) @@ -1516,7 +1516,7 @@ static void TrainerCard_Back_PrintLinkContests(void) static void TrainerCard_Back_PrintLinkPokeblocks_Label(void) { if (ewram0_2.var_c != 0) - MenuPrint(gOtherText_MixingRecord, 3, 11); + Menu_PrintText(gOtherText_MixingRecord, 3, 11); } static void TrainerCard_Back_PrintLinkPokeblocks(void) @@ -1533,7 +1533,7 @@ static void TrainerCard_Back_PrintLinkPokeblocks(void) static void TrainerCard_Back_PrintPokemonTrades_Label(void) { if (ewram0_2.var_d != 0) - MenuPrint(gOtherText_TradeRecord, 3, 9); + Menu_PrintText(gOtherText_TradeRecord, 3, 9); } static void TrainerCard_Back_PrintPokemonTrades(void) @@ -1553,5 +1553,5 @@ void unref_sub_8094588(u16 left, u16 top) if (gSaveBlock2.playerGender == FEMALE) text = gOtherText_Girl; - MenuPrint(text, left, top); + Menu_PrintText(text, left, top); } diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 960a163c1..f57face11 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -280,18 +280,18 @@ static void sub_81464E4(void) berryInfo = GetBerryInfo(gSpecialVar_ItemId + OFFSET_7B + 1); ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_ItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2); - MenuPrint(gStringVar1, 12, 4); + Menu_PrintText(gStringVar1, 12, 4); #if ENGLISH - MenuPrint(berryInfo->name, 14, 4); + Menu_PrintText(berryInfo->name, 14, 4); #elif GERMAN StringCopy(buffer, berryInfo->name); StringAppend(buffer, gOtherText_Berry2); - MenuPrint(buffer, 14, 4); + Menu_PrintText(buffer, 14, 4); #endif - MenuPrint(berryInfo->description1, 4, 14); - MenuPrint(berryInfo->description2, 4, 16); + Menu_PrintText(berryInfo->description1, 4, 14); + Menu_PrintText(berryInfo->description2, 4, 16); #ifdef UNITS_IMPERIAL size = (berryInfo->size * 1000) / 254; @@ -301,7 +301,7 @@ static void sub_81464E4(void) sizeMajor = size / 100; #endif - MenuPrint(gOtherText_Size, 11, 7); + Menu_PrintText(gOtherText_Size, 11, 7); if (berryInfo->size != 0) { #ifdef UNITS_IMPERIAL @@ -311,18 +311,18 @@ static void sub_81464E4(void) ConvertIntToDecimalStringN(gStringVar1, berryInfo->size / 10, STR_CONV_MODE_LEFT_ALIGN, 2); ConvertIntToDecimalStringN(gStringVar2, berryInfo->size % 10, STR_CONV_MODE_LEFT_ALIGN, 2); #endif - MenuPrint(gContestStatsText_Unknown1, 16, 7); + Menu_PrintText(gContestStatsText_Unknown1, 16, 7); } else { - MenuPrint(gOtherText_ThreeQuestions2, 16, 7); + Menu_PrintText(gOtherText_ThreeQuestions2, 16, 7); } - MenuPrint(gOtherText_Firm, 11, 9); + Menu_PrintText(gOtherText_Firm, 11, 9); if (berryInfo->firmness != 0) - MenuPrint(gUnknown_0841192C[berryInfo->firmness - 1], 16, 9); + Menu_PrintText(gUnknown_0841192C[berryInfo->firmness - 1], 16, 9); else - MenuPrint(gOtherText_ThreeQuestions2, 16, 9); + Menu_PrintText(gOtherText_ThreeQuestions2, 16, 9); } static void sub_8146600(u8 berry) @@ -445,7 +445,7 @@ static void sub_8146810(s8 berry) static void sub_81468BC(void) { - MenuZeroFillWindowRect(0, 4, 29, 19); + Menu_EraseWindowRect(0, 4, 29, 19); sub_81464E4(); // center of berry sprite diff --git a/src/field/braille_puzzles.c b/src/field/braille_puzzles.c index 0d304714d..f11fb5fb3 100644 --- a/src/field/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -161,7 +161,7 @@ void Task_BrailleWait(u8 taskId) case 1: if (BrailleWait_CheckButtonPress() != FALSE) { - MenuZeroFillScreen(); + Menu_EraseScreen(); PlaySE(SE_SELECT); data[0] = 2; } @@ -170,7 +170,7 @@ void Task_BrailleWait(u8 taskId) data[1] = data[1] - 1; if (data[1] == 0) { - MenuZeroFillScreen(); + Menu_EraseScreen(); data[0] = 3; data[1] = 30; } diff --git a/src/field/choose_party.c b/src/field/choose_party.c index d278eda4a..6a9c23c66 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -318,19 +318,19 @@ static void sub_812238C(u8 taskId) { if (gMain.newAndRepeatedKeys & 0x40) { - if (GetMenuCursorPos() != 0) + if (Menu_GetCursorPos() != 0) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } return; } if (gMain.newAndRepeatedKeys & 0x80) { - if (GetMenuCursorPos() != 3) + if (Menu_GetCursorPos() != 3) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } return; } @@ -343,7 +343,7 @@ static void sub_812238C(u8 taskId) gTasks[taskId].data[4], sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, - GetMenuCursorPos()); + Menu_GetCursorPos()); popupMenuFunc(taskId); return; } @@ -461,7 +461,7 @@ static void BattleTowerEntryMenuCallback_Enter(u8 taskId) } } PlaySE(SE_HAZURE); - MenuZeroFillWindowRect(20, 10, 29, 19); + Menu_EraseWindowRect(20, 10, 29, 19); HandleDestroyMenuCursors(); sub_806D5A4(); sub_806E834(gOtherText_NoMoreThreePoke, 1); @@ -475,7 +475,7 @@ static void sub_8122728(u8 taskId) if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); HandleDestroyMenuCursors(); BattleTowerEntryMenuCallback_Exit(taskId); } @@ -515,7 +515,7 @@ static void BattleTowerEntryMenuCallback_NoEntry(u8 taskId) static void sub_81227FC(u8 taskId) { - MenuZeroFillWindowRect(20, 10, 29, 19); + Menu_EraseWindowRect(20, 10, 29, 19); HandleDestroyMenuCursors(); PrintPartyMenuPromptText(0, 0); gTasks[taskId].func = HandleBattleTowerPartyMenu; @@ -806,19 +806,19 @@ static void Task_DaycareStorageMenu8122EAC(u8 taskId) { if (gMain.newAndRepeatedKeys & 0x40) { - if (GetMenuCursorPos() != 0) + if (Menu_GetCursorPos() != 0) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } return; } if (gMain.newAndRepeatedKeys & 0x80) { - if (GetMenuCursorPos() != 3) + if (Menu_GetCursorPos() != 3) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } return; } @@ -831,7 +831,7 @@ static void Task_DaycareStorageMenu8122EAC(u8 taskId) gTasks[taskId].data[4], sDaycareStorageMenus, sDaycareStorageMenuItems, - GetMenuCursorPos()); + Menu_GetCursorPos()); popupMenuFunc(taskId); return; } @@ -896,7 +896,7 @@ static void DaycareStorageMenuCallback_Summary(u8 taskId) static void DaycareStorageMenuCallback_Exit(u8 taskId) { PlaySE(SE_SELECT); - MenuZeroFillWindowRect(20, 10, 29, 19); + Menu_EraseWindowRect(20, 10, 29, 19); HandleDestroyMenuCursors(); PrintPartyMenuPromptText(15, 0); gTasks[taskId].func = HandleDaycarePartyMenu; diff --git a/src/field/coins.c b/src/field/coins.c index 91a4b508d..2c217e635 100644 --- a/src/field/coins.c +++ b/src/field/coins.c @@ -13,13 +13,13 @@ void UpdateCoinsWindow(s32 coins, u8 x, u8 y) void ShowCoinsWindow(u32 coins, u8 x, u8 y) { - MenuDrawTextWindow(x, y, x + 9, y + 3); + Menu_DrawStdWindowFrame(x, y, x + 9, y + 3); UpdateCoinsWindow(coins, x, y); } void HideCoinsWindow(u8 x, u8 y) { - MenuZeroFillWindowRect(x, y, x + 9, y + 3); + Menu_EraseWindowRect(x, y, x + 9, y + 3); } void PrintCoins(s32 coins, u8 b, u8 x, u8 y) @@ -46,7 +46,7 @@ void PrintCoins(s32 coins, u8 b, u8 x, u8 y) ptr[2] = (b - StringLength(string)) * 6; ptr += 3; StringCopy(ptr, string); - MenuPrint(gOtherText_Coins2, x, y); + Menu_PrintText(gOtherText_Coins2, x, y); } u16 GetCoins(void) diff --git a/src/field/daycare.c b/src/field/daycare.c index c28bc65ca..7814a3b24 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -1741,7 +1741,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) if (gTasks[taskId].data[0] != 0) { gTasks[taskId].data[0] --; - MoveMenuCursor(-1); + Menu_MoveCursor(-1); PlaySE(SE_SELECT); } } @@ -1750,7 +1750,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) if (gTasks[taskId].data[0] != 2) { gTasks[taskId].data[0]++; - MoveMenuCursor(+1); + Menu_MoveCursor(+1); PlaySE(SE_SELECT); } } @@ -1760,7 +1760,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) PlaySE(SE_SELECT); gLastFieldPokeMenuOpened = gSpecialVar_Result = gTasks[taskId].data[0]; DestroyTask(taskId); - MenuZeroFillWindowRect(15, 6, 29, 13); + Menu_EraseWindowRect(15, 6, 29, 13); EnableBothScriptContexts(); } else if (gMain.newKeys & B_BUTTON) @@ -1768,7 +1768,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) HandleDestroyMenuCursors(); gLastFieldPokeMenuOpened = gSpecialVar_Result = 2; DestroyTask(taskId); - MenuZeroFillWindowRect(15, 6, 29, 13); + Menu_EraseWindowRect(15, 6, 29, 13); EnableBothScriptContexts(); } } @@ -1776,9 +1776,9 @@ static void HandleDaycareLevelMenuInput(u8 taskId) void ShowDaycareLevelMenu(void) { u8 buffer[100]; - MenuDrawTextWindow(15, 6, 29, 13); + Menu_DrawStdWindowFrame(15, 6, 29, 13); GetDaycareLevelMenuText(&gSaveBlock1.daycare, buffer); - MenuPrint(buffer, 16, 7); + Menu_PrintText(buffer, 16, 7); GetDaycareLevelMenuLevelText(&gSaveBlock1.daycare, buffer); MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE); InitMenu(0, 16, 7, 3, 0, 13); diff --git a/src/field/decoration.c b/src/field/decoration.c index 87a9d8028..a91b2e37b 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1433,7 +1433,7 @@ extern u8 gUnknown_0815F399[]; void sub_80FE1DC(void) { sub_80FE2B4(); - MenuDrawTextWindow(0, 0, 10, 9); + Menu_DrawStdWindowFrame(0, 0, 10, 9); PrintMenuItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604); InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9); } @@ -1487,13 +1487,13 @@ void Task_DecorationPCProcessMenuInput(u8 taskId) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - gUnknown_020388D4 = MoveMenuCursor(-1); + gUnknown_020388D4 = Menu_MoveCursor(-1); sub_80FE394(); } if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - gUnknown_020388D4 = MoveMenuCursor(1); + gUnknown_020388D4 = Menu_MoveCursor(1); sub_80FE394(); } if (gMain.newKeys & A_BUTTON) @@ -1510,15 +1510,15 @@ void Task_DecorationPCProcessMenuInput(u8 taskId) void sub_80FE394(void) { - MenuFillWindowRectWithBlankTile(2, 15, 27, 18); - MenuPrint(gUnknown_083EC624[gUnknown_020388D4], 2, 15); + Menu_BlankWindowRect(2, 15, 27, 18); + Menu_PrintText(gUnknown_083EC624[gUnknown_020388D4], 2, 15); } void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 10, 9); - MenuFillWindowRectWithBlankTile(2, 15, 27, 18); + Menu_EraseWindowRect(0, 0, 10, 9); + Menu_BlankWindowRect(2, 15, 27, 18); FreeSpritePaletteByTag(6); if (ewram_1f000.isPlayerRoom == 0) { @@ -1561,13 +1561,13 @@ void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCateg strptr[1] = 5; strptr[2] = v0; strptr[3] = EOS; - MenuPrint(gStringVar4, left, top); + Menu_PrintText(gStringVar4, left, top); } void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings { u8 decoCat; - MenuDrawTextWindow(0, 0, 14, 19); + Menu_DrawStdWindowFrame(0, 0, 14, 19); for (decoCat=0; decoCat<8; decoCat++) { if (ewram_1f000.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECORCAT_DOLL && decoCat != DECORCAT_CUSHION) @@ -1578,13 +1578,13 @@ void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings sub_80FE470(decoCat, 1, 2 * decoCat + 1, 255); // Unselectable } } - MenuPrint(gUnknownText_Exit, 1, 17); + Menu_PrintText(gUnknownText_Exit, 1, 17); } void sub_80FE5AC(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80FE528(taskId); InitMenu(0, 1, 1, 9, gUnknown_020388F6, 13); gTasks[taskId].func = sub_80FE604; @@ -1597,15 +1597,15 @@ void sub_80FE604(u8 taskId) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gUnknown_020388F6 = GetMenuCursorPos(); + gUnknown_020388F6 = Menu_GetCursorPos(); if (gUnknown_020388F6 != 8) { gUnknown_020388D5 = sub_8134194(gUnknown_020388F6); @@ -1621,7 +1621,7 @@ void sub_80FE604(u8 taskId) } else { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 14, 19); + Menu_EraseWindowRect(0, 0, 14, 19); DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE418, 0); } } else @@ -1650,11 +1650,11 @@ void sub_80FE728(u8 taskId) void sub_80FE758(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 14, 19); + Menu_EraseWindowRect(0, 0, 14, 19); if (gTasks[taskId].data[11] != 2) { sub_80FE1DC(); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); sub_80FE394(); gTasks[taskId].func = Task_DecorationPCProcessMenuInput; } else @@ -1678,17 +1678,17 @@ void sub_80FE7D4(u8 *dest, u8 decClass) void sub_80FE7EC(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80FEC94(taskId); sub_80FECB8(gUnknown_020388F6); #if ENGLISH - MenuDrawTextWindow(15, 12, 29, 19); + Menu_DrawStdWindowFrame(15, 12, 29, 19); #elif GERMAN if ((gUnknown_020388F2 + gUnknown_020388F4) != gUnknown_020388D5) { - MenuDrawTextWindow(15, 12, 29, 19); + Menu_DrawStdWindowFrame(15, 12, 29, 19); } #endif @@ -1710,7 +1710,7 @@ void sub_80FE894(u8 taskId /*r8*/, s8 cursorVector /*r5*/, s8 bgVector /*r7*/) PlaySE(SE_SELECT); if (cursorVector != 0) { - gUnknown_020388F2 = MoveMenuCursor(cursorVector); + gUnknown_020388F2 = Menu_MoveCursor(cursorVector); } if (bgVector != 0) { @@ -1722,12 +1722,12 @@ void sub_80FE894(u8 taskId /*r8*/, s8 cursorVector /*r5*/, s8 bgVector /*r7*/) { if (v0) { - MenuDrawTextWindow(15, 12, 29, 19); + Menu_DrawStdWindowFrame(15, 12, 29, 19); } sub_80FECE0(gUnknown_020388F2 + gUnknown_020388F4); } else { - MenuZeroFillWindowRect(15, 12, 29, 19); + Menu_EraseWindowRect(15, 12, 29, 19); } } @@ -1839,13 +1839,13 @@ void sub_80FEABC(u8 taskId, u8 dummy1) void sub_80FEC94(u8 taskId) { - MenuDrawTextWindow(0, 0, 14, 19); + Menu_DrawStdWindowFrame(0, 0, 14, 19); sub_80FEABC(taskId, 0); } void sub_80FECB8(u8 decoCat) { - MenuDrawTextWindow(15, 0, 29, 3); + Menu_DrawStdWindowFrame(15, 0, 29, 3); sub_80FE470(decoCat, 16, 1, 0xff); } @@ -1902,8 +1902,8 @@ _080FED26:\n\ void sub_80FED1C(void) { - MenuZeroFillWindowRect(15, 0, 29, 3); - MenuZeroFillWindowRect(15, 12, 29, 19); + Menu_EraseWindowRect(15, 0, 29, 3); + Menu_EraseWindowRect(15, 12, 29, 19); } void sub_80FED3C(u8 taskId) @@ -2006,7 +2006,7 @@ void sub_80FEF74(void) DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 14, 19); + Menu_EraseWindowRect(0, 0, 14, 19); } bool8 sub_80FEFA4(void) @@ -2036,7 +2036,7 @@ void sub_80FEFF4(u8 taskId) void sub_80FF034(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 14, 19); + Menu_EraseWindowRect(0, 0, 14, 19); sub_80FE5AC(taskId); } @@ -3128,7 +3128,7 @@ void sub_81000A0(u8 taskId) void sub_81000C4(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_8100174(taskId); if (gDecorations[gUnknown_020388D0[gUnknown_020388F5]].permission != DECORPERM_SOLID_MAT) { @@ -3186,7 +3186,7 @@ void sub_8100248(u8 taskId) void sub_810026C(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_810028C(taskId); } @@ -3341,7 +3341,7 @@ void sub_8100494(u8 taskId) void sub_810065C(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSprites[gUnknown_020391A8].data[7] = 0; gTasks[taskId].data[10] = 0; gTasks[taskId].func = sub_8100494; @@ -3723,7 +3723,7 @@ void sub_8100C88(u8 taskId) { DrawWholeMapView(); ScriptContext1_SetupScript(gUnknown_081A2F8A); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gTasks[taskId].data[2] = 2; } break; @@ -3760,7 +3760,7 @@ bool8 sub_8100D38(u8 taskId) void SetUpPuttingAwayDecorationPlayerAvatar(void) { player_get_direction_lower_nybble(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0]; sub_81016C8(); gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83ECA88, 0x78, 0x50, 0); @@ -3810,7 +3810,7 @@ void sub_8100E70(u8 taskId) void sub_8100EEC(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSprites[gUnknown_020391A8].data[7] = 0; gSprites[gUnknown_020391A8].invisible = 0; gSprites[gUnknown_020391A8].callback = sub_8101698; @@ -4150,7 +4150,7 @@ void sub_810156C(u8 taskId) void sub_8101590(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_81015B0(taskId); } @@ -4192,7 +4192,7 @@ void sub_8101648(u8 taskId) void sub_8101678(void) { pal_fill_black(); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); sub_80FE220(); CreateTask(sub_8101648, 8); } @@ -4274,7 +4274,7 @@ void sub_8101824(u8 taskId) void sub_8101848(u8 taskId) { - MenuZeroFillWindowRect(20, 8, 26, 14); + Menu_EraseWindowRect(20, 8, 26, 14); sub_8109A30(gUnknown_020388D0[gUnknown_020388F5]); gUnknown_020388D0[gUnknown_020388F5] = DECOR_NONE; sub_80FF098(taskId); diff --git a/src/field/diploma.c b/src/field/diploma.c index 27601404c..b9cdb65df 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -135,5 +135,5 @@ static void DisplayDiplomaText(void) REG_BG3HOFS = 0; StringCopy(gStringVar1, gOtherText_HoennDex); } - MenuPrint(gOtherText_DiplomaCertificationGameFreak, 6, 2); + Menu_PrintText(gOtherText_DiplomaCertificationGameFreak, 6, 2); } \ No newline at end of file diff --git a/src/field/field_message_box.c b/src/field/field_message_box.c index 35aac7ac9..284fdb3f0 100644 --- a/src/field/field_message_box.c +++ b/src/field/field_message_box.c @@ -19,8 +19,8 @@ static void PrintFieldMessageFromStringVar4(void); void InitFieldMessageBox(void) { sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; - SetMessageBoxBaseTileNum(gMenuTextWindowContentTileOffset); - InitWindowFromConfig(&gFieldMessageBoxWindow, &gWindowConfig_81E6CE4); + TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); + Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gWindowConfig_81E6CE4); } static void Task_FieldMessageBox(u8 taskId) @@ -29,22 +29,22 @@ static void Task_FieldMessageBox(u8 taskId) switch (task->data[0]) { case 0: - LoadMessageBoxTiles(&gFieldMessageBoxWindow); + TextWindow_LoadDialogueFrameTiles(&gFieldMessageBoxWindow); task->data[0]++; break; case 1: - DrawStandardMessageBox(&gFieldMessageBoxWindow); + TextWindow_DrawDialogueFrame(&gFieldMessageBoxWindow); task->data[0]++; break; case 2: switch (sMessageBoxMode) { case FIELD_MESSAGE_BOX_NORMAL: - if (!sub_80035AC(&gFieldMessageBoxWindow)) + if (!Text_UpdateWindow(&gFieldMessageBoxWindow)) return; break; case FIELD_MESSAGE_BOX_AUTO_SCROLL: - if (!sub_8003778(&gFieldMessageBoxWindow)) + if (!Text_UpdateWindowAutoscroll(&gFieldMessageBoxWindow)) return; break; } @@ -117,20 +117,20 @@ bool8 unref_sub_8064BD0(const u8 *message) static void PrintFieldMessage(const u8 *message) { StringExpandPlaceholders(gStringVar4, message); - sub_8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); + Text_InitWindow8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); CreateFieldMessageBoxTask(); } static void PrintFieldMessageFromStringVar4(void) { - sub_8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); + Text_InitWindow8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); CreateFieldMessageBoxTask(); } void HideFieldMessageBox(void) { DestroyFieldMessageBoxTask(); - ClearStandardMessageBox(&gFieldMessageBoxWindow); + TextWindow_EraseDialogueFrame(&gFieldMessageBoxWindow); sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } @@ -150,6 +150,6 @@ bool8 IsFieldMessageBoxHidden(void) void unref_sub_8064CA0(void) { DestroyFieldMessageBoxTask(); - DrawStandardMessageBox(&gFieldMessageBoxWindow); + TextWindow_DrawDialogueFrame(&gFieldMessageBoxWindow); sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index d80076be4..9a29e2e92 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -1507,7 +1507,7 @@ u8 Fishing4(struct Task *task) { u32 randVal; - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); task->tStep++; task->tFrameCounter = 0; task->tNumDots = 0; @@ -1549,7 +1549,7 @@ u8 Fishing5(struct Task *task) } else { - MenuPrint(dot, task->tNumDots + 4, 15); + Menu_PrintText(dot, task->tNumDots + 4, 15); task->tNumDots++; } } @@ -1573,7 +1573,7 @@ u8 Fishing6(struct Task *task) u8 Fishing7(struct Task *task) { sub_805A954(); - MenuPrint(gOtherText_OhABite, 4, 17); + Menu_PrintText(gOtherText_OhABite, 4, 17); task->tStep++; task->tFrameCounter = 0; return 0; @@ -1624,7 +1624,7 @@ u8 Fishing10(struct Task *task) { sub_805A954(); MenuPrintMessageDefaultCoords(gOtherText_PokeOnHook); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); task->tStep++; task->tFrameCounter = 0; return 0; @@ -1637,7 +1637,7 @@ u8 Fishing11(struct Task *task) if (task->tFrameCounter == 0) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -1647,7 +1647,7 @@ u8 Fishing11(struct Task *task) sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); gSprites[gPlayerAvatar.spriteId].pos2.x = 0; gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - MenuZeroFillScreen(); + Menu_EraseScreen(); task->tFrameCounter++; return 0; } @@ -1688,7 +1688,7 @@ u8 Fishing13(struct Task *task) u8 Fishing14(struct Task *task) { sub_805A954(); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); task->tStep++; return 0; } @@ -1713,12 +1713,12 @@ u8 Fishing15(struct Task *task) u8 Fishing16(struct Task *task) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); UnfreezeMapObjects(); - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_80BE97C(0); DestroyTask(FindTaskIdByFunc(Task_Fishing)); } diff --git a/src/field/field_region_map.c b/src/field/field_region_map.c index 73e101d8f..af8e4ec8a 100644 --- a/src/field/field_region_map.c +++ b/src/field/field_region_map.c @@ -52,11 +52,11 @@ void CB2_FieldInitRegionMap(void) CreateRegionMapCursor(1, 1); SetUpWindowConfig(&gWindowConfig_81E709C); InitMenuWindow(&gWindowConfig_81E709C); - MenuZeroFillScreen(); + Menu_EraseScreen(); REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; - MenuDrawTextWindow(21, 0, 29, 3); + Menu_DrawStdWindowFrame(21, 0, 29, 3); sub_8072BD8(gOtherText_Hoenn, 0x16, 1, 0x38); - MenuDrawTextWindow(16, 16, 29, 19); + Menu_DrawStdWindowFrame(16, 16, 29, 19); sub_813F0C8(); SetMainCallback2(CB2_FieldRegionMap); SetVBlankCallback(VBlankCB_FieldRegionMap); @@ -117,7 +117,7 @@ void sub_813EFDC(void) void sub_813F0C8(void) { - MenuFillWindowRectWithBlankTile(17, 17, 28, 18); + Menu_BlankWindowRect(17, 17, 28, 18); if (ewram0_5.unk8.unk16) - MenuPrint(ewram0_5.unk8.str, 17, 17); + Menu_PrintText(ewram0_5.unk8.str, 17, 17); } diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index a472d5a9c..f123768e5 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -215,7 +215,7 @@ static void sub_80816A8(u8 taskId) data[0] = 1; break; case 1: - MenuFillWindowRectWithBlankTile(0, 0, 29, 19); + Menu_BlankWindowRect(0, 0, 29, 19); sub_808161C(data[1]); sub_8081534(data[2], data[3], 1, 160, 1, 2); data[0] = 2; @@ -264,7 +264,7 @@ static void sub_80816A8(u8 taskId) } break; case 5: - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); LoadFontDefaultPalette(&gWindowConfig_81E6CE4); REG_WIN0H = 255; REG_DISPCNT = data[6]; diff --git a/src/field/field_specials.c b/src/field/field_specials.c index fc6f690a3..589f96844 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -1058,7 +1058,7 @@ static void sub_810E874(void) ScriptContext2_Enable(); if (gUnknown_0203925A > 5) { - MenuDrawTextWindow(0, 0, 8, 11); + Menu_DrawStdWindowFrame(0, 0, 8, 11); InitMenu(0, 1, 1, 5, 0, 7); gUnknown_0203925C = 0; sub_80F944C(); @@ -1067,12 +1067,12 @@ static void sub_810E874(void) } else { - MenuDrawTextWindow(0, 0, 8, 2 * gUnknown_0203925A + 1); + Menu_DrawStdWindowFrame(0, 0, 8, 2 * gUnknown_0203925A + 1); InitMenu(0, 1, 1, gUnknown_0203925A, 0, 7); } for (i = 0; i < 5 && gUnknown_03000760[i].var0 != 16; i ++) { - MenuPrint(gUnknown_083F8380[gUnknown_03000760[i].var0], 1, 2 * i + 1); + Menu_PrintText(gUnknown_083F8380[gUnknown_03000760[i].var0], 1, 2 * i + 1); } DisplayCurrentElevatorFloor(); CreateTask(sub_810E984, 8); @@ -1080,7 +1080,7 @@ static void sub_810E874(void) void DisplayCurrentElevatorFloor(void) { - MenuDrawTextWindow(20, 0, 29, 5); + Menu_DrawStdWindowFrame(20, 0, 29, 5); sub_8072BD8(gOtherText_NowOn, 21, 1, 64); sub_8072BD8(gUnknown_083F8380[gSpecialVar_0x8005], 21, 3, 64); } @@ -1091,15 +1091,15 @@ void sub_810E984(u8 taskId) if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0) { gUnknown_0203925B--; - curMenuPos = GetMenuCursorPos(); - MoveMenuCursorNoWrap(-1); + curMenuPos = Menu_GetCursorPos(); + Menu_MoveCursorNoWrap(-1); sub_810EAC8(curMenuPos, DPAD_UP); } if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1) { gUnknown_0203925B++; - curMenuPos = GetMenuCursorPos(); - MoveMenuCursorNoWrap(+1); + curMenuPos = Menu_GetCursorPos(); + Menu_MoveCursorNoWrap(+1); sub_810EAC8(curMenuPos, DPAD_DOWN); } if (gMain.newKeys & A_BUTTON) @@ -1109,7 +1109,7 @@ void sub_810E984(u8 taskId) { gSpecialVar_Result = 0; PlaySE(SE_SELECT); - MenuZeroFillWindowRect(0, 0, 29, 12); + Menu_EraseWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } else @@ -1119,7 +1119,7 @@ void sub_810E984(u8 taskId) ShakeScreenInElevator(); FieldObjectTurnByLocalIdAndMap(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH); sub_810EEDC(); - MenuZeroFillScreen(); + Menu_EraseScreen(); DestroyTask(taskId); } } @@ -1128,7 +1128,7 @@ void sub_810E984(u8 taskId) gSpecialVar_Result = 0; PlaySE(SE_SELECT); sub_810EEDC(); - MenuZeroFillWindowRect(0, 0, 29, 12); + Menu_EraseWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } } @@ -1163,10 +1163,10 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) if (flag) { sub_810EB90(newPos, 5); - MenuFillWindowRectWithBlankTile(2, 1, 7, 10); + Menu_BlankWindowRect(2, 1, 7, 10); for (i=0; i<5 && gUnknown_03000760[newPos].var0 != 16; newPos++, i++) { - MenuPrint(gUnknown_083F8380[gUnknown_03000760[newPos].var0], 1, i * 2 + 1); + Menu_PrintText(gUnknown_083F8380[gUnknown_03000760[newPos].var0], 1, i * 2 + 1); } } return flag; @@ -1227,7 +1227,7 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) "\tmovs r1, 0x1\n" "\tmovs r2, 0x7\n" "\tmovs r3, 0xA\n" - "\tbl MenuFillWindowRectWithBlankTile\n" + "\tbl Menu_BlankWindowRect\n" "\tmovs r5, 0\n" "\tldr r2, _0810EB88 @ =gUnknown_03000760\n" "\tlsls r1, r4, 2\n" @@ -1249,7 +1249,7 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) "\tlsls r2, 24\n" "\tlsrs r2, 24\n" "\tmovs r1, 0x1\n" - "\tbl MenuPrint\n" + "\tbl Menu_PrintText\n" "\tadds r0, r4, 0x1\n" "\tlsls r0, 24\n" "\tlsrs r4, r0, 24\n" @@ -1539,7 +1539,7 @@ void ShowGlassWorkshopMenu(void) { u8 i; ScriptContext2_Enable(); - MenuDrawTextWindow(0, 0, 10, 11); + Menu_DrawStdWindowFrame(0, 0, 10, 11); InitMenu(0, 1, 1, 5, 0, 9); gUnknown_0203925C = 0; sub_80F944C(); @@ -1547,7 +1547,7 @@ void ShowGlassWorkshopMenu(void) sub_810F2B4(); for (i=0; i<5; i++) { - MenuPrint(gUnknown_083F83C0[i], 1, 2 * i + 1); + Menu_PrintText(gUnknown_083F83C0[i], 1, 2 * i + 1); } gUnknown_0203925B = 0; gUnknown_0203925A = ARRAY_COUNT(gUnknown_083F83C0); @@ -1560,15 +1560,15 @@ void sub_810F118(u8 taskId) if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0) { gUnknown_0203925B--; - prevCursorPos = GetMenuCursorPos(); - MoveMenuCursorNoWrap(-1); + prevCursorPos = Menu_GetCursorPos(); + Menu_MoveCursorNoWrap(-1); sub_810F1F4(prevCursorPos, DPAD_UP); } if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1) { gUnknown_0203925B++; - prevCursorPos = GetMenuCursorPos(); - MoveMenuCursorNoWrap(1); + prevCursorPos = Menu_GetCursorPos(); + Menu_MoveCursorNoWrap(1); sub_810F1F4(prevCursorPos, DPAD_DOWN); } if (gMain.newKeys & A_BUTTON) @@ -1577,7 +1577,7 @@ void sub_810F118(u8 taskId) gSpecialVar_Result = gUnknown_0203925B; PlaySE(SE_SELECT); sub_810EEDC(); - MenuZeroFillWindowRect(0, 0, 29, 12); + Menu_EraseWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } if (gMain.newKeys & B_BUTTON) @@ -1586,7 +1586,7 @@ void sub_810F118(u8 taskId) gSpecialVar_Result = 0x7f; PlaySE(SE_SELECT); sub_810EEDC(); - MenuZeroFillWindowRect(0, 0, 29, 12); + Menu_EraseWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } } @@ -1621,10 +1621,10 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) if (flag) { GlassWorkshopUpdateScrollIndicators(newPos, 5); - MenuFillWindowRectWithBlankTile(2, 1, 9, 10); + Menu_BlankWindowRect(2, 1, 9, 10); for (i=0; i<5; newPos++, i++) { - MenuPrint(gUnknown_083F83C0[newPos], 1, 2 * i + 1); + Menu_PrintText(gUnknown_083F83C0[newPos], 1, 2 * i + 1); } } return flag; @@ -1683,7 +1683,7 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) "\tmovs r1, 0x1\n" "\tmovs r2, 0x9\n" "\tmovs r3, 0xA\n" - "\tbl MenuFillWindowRectWithBlankTile\n" + "\tbl Menu_BlankWindowRect\n" "\tmovs r5, 0\n" "\tldr r7, _0810F28C @ =gUnknown_083F83C0\n" "_0810F25C:\n" @@ -1695,7 +1695,7 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) "\tlsls r2, 24\n" "\tlsrs r2, 24\n" "\tmovs r1, 0x1\n" - "\tbl MenuPrint\n" + "\tbl Menu_PrintText\n" "\tadds r0, r4, 0x1\n" "\tlsls r0, 24\n" "\tlsrs r4, r0, 24\n" diff --git a/src/field/fldeff_softboiled.c b/src/field/fldeff_softboiled.c index a574232a8..3c64ec520 100644 --- a/src/field/fldeff_softboiled.c +++ b/src/field/fldeff_softboiled.c @@ -126,7 +126,7 @@ static void sub_8133E74(u8 taskId) { return; } - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); PrintPartyMenuPromptText(3, 0); gTasks[taskId].func = HandlePartyMenuSwitchPokemonInput; } @@ -142,7 +142,7 @@ static void sub_8133EF8(void) { sub_806CCE4(); EWRAM_1B000_2.unk261 = 2; DestroySprite(&gSprites[EWRAM_1000.unk1]); - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); PrintPartyMenuPromptText(0, 0); SwitchTaskToFollowupFunc(EWRAM_1000.unk0); } diff --git a/src/field/item_menu.c b/src/field/item_menu.c index e9b8b24d3..0db48f55d 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -1062,7 +1062,7 @@ void sub_80A4164(u8 *dest, u16 value, enum StringConvertMode mode, u8 digits) void sub_80A418C(u16 value, enum StringConvertMode mode, u8 c, u8 d, u8 digits) { sub_80A4164(gStringVar1, value, mode, digits); - MenuPrint(gStringVar1, c, d); + Menu_PrintText(gStringVar1, c, d); } static void sub_80A41D4(u8 taskId) @@ -1112,7 +1112,7 @@ static bool8 sub_80A42B0(u8 itemPos, int b) return TRUE; r5 = itemPos * 2 + 2; sub_8072C74(gStringVar1, gOtherText_CloseBag, 0x78, 0); - MenuPrint(gStringVar1, 14, r5); + Menu_PrintText(gStringVar1, 14, r5); ptr = gBGTilemapBuffers[2] + 14 + r5 * 32; ptr[0] = 0x4F; ptr[1] = 0x4F; @@ -1121,9 +1121,9 @@ static bool8 sub_80A42B0(u8 itemPos, int b) if (itemPos == 7) return TRUE; if ((b == 1 && r8->unk2 != 0) || b == 2) - MenuFillWindowRectWithBlankTile(14, r5 + 2, 29, 13); + Menu_BlankWindowRect(14, r5 + 2, 29, 13); else - MenuFillWindowRectWithBlankTile(14, r5 + 2, 29, 17); + Menu_BlankWindowRect(14, r5 + 2, 29, 17); return TRUE; } return FALSE; @@ -1148,7 +1148,7 @@ static void sub_80A4380(u16 a, int b, int c, int d) text = sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x66, 0); *text++ = CHAR_MULT_SIGN; sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1); - MenuPrint(gStringVar1, 14, r5); + Menu_PrintText(gStringVar1, 14, r5); } } @@ -1173,7 +1173,7 @@ static void sub_80A444C(u16 a, int b, int c, int d) #else sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x63, 0); #endif - MenuPrint(gStringVar1, 14, r5); + Menu_PrintText(gStringVar1, 14, r5); if (gUnknown_02038558 != 0) { if (gCurrentBagPocketItemSlots[r4].itemId == gSaveBlock1.registeredItem) @@ -1240,7 +1240,7 @@ static void sub_80A4548(u16 a, int b, int c, int d) moveName = gMoveNames[ItemIdToBattleMoveId(gCurrentBagPocketItemSlots[r4].itemId)]; sub_8072C74(text, moveName, 0x78, 0); } - MenuPrint(gStringVar1, 14, sp10); + Menu_PrintText(gStringVar1, 14, sp10); } } #else @@ -1421,7 +1421,7 @@ _080A46AE:\n\ ldr r0, _080A46F8 @ =gStringVar1\n\ movs r1, 0xE\n\ ldr r2, [sp, 0x10]\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ mov r0, r8\n\ adds r0, 0x1\n\ lsls r0, 24\n\ @@ -1482,7 +1482,7 @@ static void sub_80A46FC(u16 a, int b, int c, int d) text = sub_80A425C(a, text, i); CopyItemName(gCurrentBagPocketItemSlots[r4].itemId, gStringVar2); sub_80A41E0(text, gCurrentBagPocketItemSlots[r4].itemId - 0x84, gStringVar2, gCurrentBagPocketItemSlots[r4].quantity, 3); - MenuPrint(gStringVar1, 14, r5); + Menu_PrintText(gStringVar1, 14, r5); } } @@ -1540,7 +1540,7 @@ static void ItemListMenu_InitDescription(s16 itemId) } if (r5 < 3) - MenuZeroFillWindowRect(0, 13 + r5 * 2, 13, 20); + Menu_EraseWindowRect(0, 13 + r5 * 2, 13, 20); } static void ItemListMenu_ChangeDescription(s16 itemId, int b) @@ -1551,7 +1551,7 @@ static void ItemListMenu_ChangeDescription(s16 itemId, int b) { if (b == 0) { - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); } else if (b == 1) @@ -1562,7 +1562,7 @@ static void ItemListMenu_ChangeDescription(s16 itemId, int b) else { if (b == 0) - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); if (ItemId_CopyDescription(description, itemId, b)) MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0); } @@ -1602,7 +1602,7 @@ static void sub_80A4A98(const u8 *text, u32 line) u8 buffer[100]; if (line == 0) - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); if (CopyTextLine(buffer, text, line)) MenuPrint_PixelCoords(buffer, 4, 104 + line * 16, 0); } @@ -1618,7 +1618,7 @@ static void sub_80A4ADC(u8 taskId) static void sub_80A4B14(s8 a, u8 b) { gBagPocketScrollStates[sCurrentBagPocket].scrollTop += a; - MoveMenuCursor(0); + Menu_MoveCursor(0); sub_80A73C0(); sub_80A763C(); sub_80A4ADC(b); @@ -1626,7 +1626,7 @@ static void sub_80A4B14(s8 a, u8 b) static void sub_80A4B58(s8 delta, u8 b) { - gBagPocketScrollStates[sCurrentBagPocket].cursorPos = MoveMenuCursor(delta); + gBagPocketScrollStates[sCurrentBagPocket].cursorPos = Menu_MoveCursor(delta); sub_80A73C0(); sub_80A4ADC(b); } @@ -1649,7 +1649,7 @@ static void sub_80A4BF0(u16 *a) if (gUnknown_02038564 == 4) { - MenuDrawTextWindow(0, 7, 13, 12); + Menu_DrawStdWindowFrame(0, 7, 13, 12); sub_80A4008(a, 1, 8, 12, 4); if (sub_80F9344() == TRUE && sReturnLocation == RETURN_TO_FIELD_5) { @@ -1665,7 +1665,7 @@ static void sub_80A4BF0(u16 *a) text = sub_80A4B90(gSpecialVar_ItemId); else text = sItemPopupMenuActions[sPopupMenuActionList[i]].text; - MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); + Menu_PrintText(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); } } if (sReturnLocation == RETURN_TO_FIELD_5) @@ -1676,10 +1676,10 @@ static void sub_80A4BF0(u16 *a) } else { - MenuDrawTextWindow(0, 5, 13, 12); + Menu_DrawStdWindowFrame(0, 5, 13, 12); sub_80A4008(a, 1, 6, 12, 6); for (i = 0; i < gUnknown_02038564; i++) - MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2); + Menu_PrintText(sItemPopupMenuActions[sPopupMenuActionList[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2); InitMenu(0, 1, 6, gUnknown_02038564, 0, 1); sub_8072DCC(0x2F); } @@ -1690,7 +1690,7 @@ static void sub_80A4DA4(u16 *a) { sub_80A73FC(); sub_80A36B8(a, 0, 6, 13, 6); - MenuZeroFillWindowRect(0, 5, 13, 12); + Menu_EraseWindowRect(0, 5, 13, 12); sub_80A7590(); } @@ -1699,7 +1699,7 @@ static void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 digits) gTasks[taskId].data[1] = 1; gTasks[taskId].data[2] = b + 2; gTasks[taskId].data[3] = c + 1; - MenuDrawTextWindow(b, c, b + d, c + e); + Menu_DrawStdWindowFrame(b, c, b + d, c + e); sub_80A4008(gBGTilemapBuffers[1], b + 1, c + 1, d - 1, e - 1); sub_80A418C(1, 1, b + 2, c + 1, digits); } @@ -2539,7 +2539,7 @@ static void sub_80A57C4(void) r5 = 7; } sub_80A4008(gBGTilemapBuffers[1], 7, r5 + 1, 6, gUnknown_02038564 * 2); - MenuDrawTextWindow(6, r5, 13, gUnknown_02038564 * 2 + 1 + r5); + Menu_DrawStdWindowFrame(6, r5, 13, gUnknown_02038564 * 2 + 1 + r5); sub_80A7834(0, r5); InitMenu(0, 7, r5 + 1, gUnknown_02038564, 0, 6); } @@ -2553,7 +2553,7 @@ static void sub_80A5888(u8 taskId) if (sPopupMenuSelection != 0) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor(-1); + sPopupMenuSelection = Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) @@ -2561,7 +2561,7 @@ static void sub_80A5888(u8 taskId) if (sPopupMenuSelection != gUnknown_02038564 - 1) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor(1); + sPopupMenuSelection = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -2690,14 +2690,14 @@ static void sub_80A5C24(u8 taskId) void CleanUpItemMenuMessage(u8 taskId) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); - MenuZeroFillWindowRect(7, 7, 13, 12); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(7, 7, 13, 12); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A5C24; } void CleanUpOverworldMessage(u8 taskId) { - MenuZeroFillWindowRect(0, 13, 29, 19); + Menu_EraseWindowRect(0, 13, 29, 19); DestroyTask(taskId); sub_8064E2C(); ScriptContext2_Disable(); @@ -2760,7 +2760,7 @@ static void sub_80A5DA0(u16 itemId, u16 quantity) static void sub_80A5DF8(void) { sub_80A4DA4(gBGTilemapBuffers[1]); - MenuZeroFillWindowRect(7, 6, 11, 13); + Menu_EraseWindowRect(7, 6, 11, 13); sub_80A7528(4); } @@ -2857,7 +2857,7 @@ static void sub_80A6024(u8 taskId) if (gMain.newKeys & A_BUTTON) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A6000; } } @@ -3008,7 +3008,7 @@ static void sub_80A640C(u8 taskId) static void sub_80A6444(u8 taskId) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A640C; } @@ -3016,7 +3016,7 @@ static void sub_80A648C(u8 taskId) { gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput; sub_80A4008(gBGTilemapBuffers[1], 1, 11, 12, 2); - MenuDrawTextWindow(0, 10, 13, 13); + Menu_DrawStdWindowFrame(0, 10, 13, 13); gTasks[taskId].data[1] = 1; gTasks[taskId].data[2] = 1; gTasks[taskId].data[3] = 11; @@ -3053,7 +3053,7 @@ static void sub_80A6574(u8 taskId) static void sub_80A65AC(u8 taskId) { - MenuZeroFillWindowRect(7, 6, 13, 12); + Menu_EraseWindowRect(7, 6, 13, 12); sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gOtherText_SoldItem); @@ -3063,7 +3063,7 @@ static void sub_80A65AC(u8 taskId) static void sub_80A6618(u8 taskId) { - MenuZeroFillWindowRect(7, 6, 13, 12); + Menu_EraseWindowRect(7, 6, 13, 12); sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); BuyMenuPrintItemQuantityAndPrice(taskId); } @@ -3078,13 +3078,13 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId) { if (sub_80A5350(taskId) == TRUE) { - MenuZeroFillWindowRect(6, 11, 12, 11); + Menu_EraseWindowRect(6, 11, 12, 11); BuyMenuDisplayMessage(gSpecialVar_ItemId, gTasks[taskId].data[1]); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - MenuZeroFillWindowRect(0, 10, 13, 13); + Menu_EraseWindowRect(0, 10, 13, 13); sub_80A36B8(gBGTilemapBuffers[1], 0, 10, 13, 3); ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gSpecialVar_ItemId) / 2 * gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gOtherText_CanPay); @@ -3110,8 +3110,8 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); CloseMoneyWindow(0, 0); - MenuZeroFillWindowRect(0, 4, 13, 13); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 4, 13, 13); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A6760; } @@ -3229,7 +3229,7 @@ static void sub_80A6A84(u8 taskId) sub_80A4DA4(gBGTilemapBuffers[1]); CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, taskData[1], STR_CONV_MODE_LEFT_ALIGN, 3); - MenuZeroFillWindowRect(7, 6, 11, 13); + Menu_EraseWindowRect(7, 6, 11, 13); sub_80A7528(7); sub_80A3D5C(taskId); gTasks[taskId].func = sub_80A5E1C; @@ -3361,16 +3361,16 @@ static void sub_80A6DF0(u16 *a) { u8 r6 = (gUnknown_02038564 - 1) * 2; - MenuDrawTextWindow(7, 9 - r6, 13, 12); + Menu_DrawStdWindowFrame(7, 9 - r6, 13, 12); sub_80A4008(a, 8, 10 - r6, 5, r6 + 2); if (gUnknown_02038564 == 1) { - MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 10); + Menu_PrintText(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 10); } else { - MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 8); - MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[1]].text, 8, 10); + Menu_PrintText(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 8); + Menu_PrintText(sItemPopupMenuActions[sPopupMenuActionList[1]].text, 8, 10); } InitMenu(0, 8, 10 - r6, gUnknown_02038564, 0, 5); sub_80A7528(2); @@ -3383,7 +3383,7 @@ static void sub_80A6EB8(u8 taskId) if (sPopupMenuSelection == 1) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor(-1); + sPopupMenuSelection = Menu_MoveCursor(-1); } } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) @@ -3391,7 +3391,7 @@ static void sub_80A6EB8(u8 taskId) if (sPopupMenuSelection + 1 < gUnknown_02038564) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor(1); + sPopupMenuSelection = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -3669,7 +3669,7 @@ static void sub_80A756C(void) static void sub_80A7590(void) { - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); sub_80A756C(); } @@ -3748,7 +3748,7 @@ static void sub_80A7694(void) static void sub_80A76A0(void) { - MenuZeroFillWindowRect(14, 2, 29, 18); + Menu_EraseWindowRect(14, 2, 29, 18); sub_80A7678(); } @@ -3816,7 +3816,7 @@ static void sub_80A7768(void) const u8 *text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; int var = r4->unk1 - 1; - MenuPrint(text, 7, var * 2 + 1 + r4->unk3); + Menu_PrintText(text, 7, var * 2 + 1 + r4->unk3); } else { @@ -3828,7 +3828,7 @@ static void sub_80A7768(void) else text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; var = r4->unk1 - 1; - MenuPrint(text, (var >> 1) * 6 + 1, (var & 1) * 2 + 8); + Menu_PrintText(text, (var >> 1) * 6 + 1, (var & 1) * 2 + 8); } if (r4->unk1 == gUnknown_02038564) { diff --git a/src/field/item_use.c b/src/field/item_use.c index e1fdddce0..bd76db77e 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -123,7 +123,7 @@ void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) switch (playerMenuStatus) { case 0: // Item Menu - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); break; default: // Field @@ -312,7 +312,7 @@ void RunItemfinderResults(u8 taskId) void ExitItemfinder(u8 taskId) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); sub_8064E2C(); ScriptContext2_Disable(); DestroyTask(taskId); @@ -744,7 +744,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) if (!gTasks[taskId].data[2]) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); } else @@ -770,7 +770,7 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) { if (gTasks[taskId].data[2] == 0) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BB8, 1); } else @@ -875,7 +875,7 @@ void ItemUseOutOfBattle_RareCandy(u8 taskId) void ItemUseOutOfBattle_TMHM(u8 taskId) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); if (gSpecialVar_ItemId >= ITEM_HM01) DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM @@ -1022,7 +1022,7 @@ void ItemUseInBattle_PokeBall(u8 var) } else { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(var, gOtherText_BoxIsFull, CleanUpItemMenuMessage, 1); } } @@ -1047,7 +1047,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId) { u16 partyId = gBattlePartyID[gBankInMenu]; - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE) { @@ -1096,7 +1096,7 @@ void ItemUseInBattle_PPRecovery(u8 var) void unref_sub_80CA448(u8 var) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); if (ExecuteTableBasedItemEffect__(0, gSpecialVar_ItemId, 0) == FALSE) { @@ -1113,7 +1113,7 @@ void unref_sub_80CA448(u8 var) void ItemUseInBattle_Escape(u8 taskId) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) { diff --git a/src/field/map_name_popup.c b/src/field/map_name_popup.c index 2e2dfc72e..49a470cc1 100644 --- a/src/field/map_name_popup.c +++ b/src/field/map_name_popup.c @@ -89,8 +89,8 @@ void HideMapNamePopup(void) { if (FuncIsActiveTask(Task_MapNamePopup)) { - MenuLoadTextWindowGraphics(); - MenuZeroFillWindowRect(0, 0, 13, 3); + Menu_LoadStdFrameGraphics(); + Menu_EraseWindowRect(0, 0, 13, 3); REG_BG0VOFS = 0; DestroyTask(sTaskId); } @@ -100,8 +100,8 @@ void DrawMapNamePopup(void) { u8 name[20]; - MenuLoadTextWindowGraphics_OverrideFrameType(0); + Menu_LoadStdFrameGraphicsOverrideStyle(0); GetMapSectionName(name, gMapHeader.regionMapSectionId, 0); - MenuDrawTextWindow(0, 0, 13, 3); + Menu_DrawStdWindowFrame(0, 0, 13, 3); sub_8072BD8(name, 1, 1, 0x60); } diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 4db513f65..82c6dffe3 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -345,7 +345,7 @@ void PrepareSongText(void) void ScrSpecial_PlayBardSong(void) { StartBardSong(gSpecialVar_0x8004); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); ScriptContext1_Stop(); } @@ -858,8 +858,8 @@ static void Task_BardSong(u8 taskId) { case 0: // Initialize song PrepareSongText(); - InitWindowFromConfig(gMenuWindowPtr, &gWindowConfig_81E6CE4); - sub_8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); + Text_InitWindowWithTemplate(gMenuWindowPtr, &gWindowConfig_81E6CE4); + Text_InitWindow8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); task->data[1] = 0; task->data[2] = 0; task->tCharIndex = 0; @@ -921,7 +921,7 @@ static void Task_BardSong(u8 taskId) } else if (gStringVar4[task->tCharIndex] == CHAR_SPACE) { - sub_8003418(gMenuWindowPtr); + Text_PrintWindowSimple(gMenuWindowPtr); task->tCharIndex++; task->tState = 2; task->data[2] = 0; @@ -941,7 +941,7 @@ static void Task_BardSong(u8 taskId) else if (gStringVar4[task->tCharIndex] == CHAR_SONG_WORD_SEPARATOR) { gStringVar4[task->tCharIndex] = CHAR_SPACE; // restore it back to a space - sub_8003418(gMenuWindowPtr); + Text_PrintWindowSimple(gMenuWindowPtr); task->tCharIndex++; task->data[2] = 0; } @@ -950,7 +950,7 @@ static void Task_BardSong(u8 taskId) switch (task->data[1]) { case 0: - sub_8003418(gMenuWindowPtr); + Text_PrintWindowSimple(gMenuWindowPtr); task->data[1]++; break; case 1: @@ -1219,7 +1219,7 @@ static void PrintStoryList(void) { s32 i; - MenuDrawTextWindow(0, 0, 25, 4 + GetFreeStorySlot() * 2); + Menu_DrawStdWindowFrame(0, 0, 25, 4 + GetFreeStorySlot() * 2); for (i = 0; i < 4; i++) { struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; @@ -1227,9 +1227,9 @@ static void PrintStoryList(void) if (stat == 0) break; - MenuPrint(GetStoryTitleByStat(stat), 1, 2 + i * 2); + Menu_PrintText(GetStoryTitleByStat(stat), 1, 2 + i * 2); } - MenuPrint(gPCText_Cancel, 1, 2 + i * 2); + Menu_PrintText(gPCText_Cancel, 1, 2 + i * 2); } static u8 gUnknown_03000748; @@ -1247,7 +1247,7 @@ static void Task_StoryListMenu(u8 taskId) task->data[0]++; break; case 1: - selection = ProcessMenuInput(); + selection = Menu_ProcessInput(); if (selection == -2) break; if (selection == -1 || selection == GetFreeStorySlot()) @@ -1260,7 +1260,7 @@ static void Task_StoryListMenu(u8 taskId) gUnknown_03000748 = selection; } HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 25, 12); + Menu_EraseWindowRect(0, 0, 25, 12); DestroyTask(taskId); EnableBothScriptContexts(); break; diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index e3ef0c790..44b24eed6 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -135,7 +135,7 @@ void sub_80F9020(void) // display message box, fill box with tile if tile is not zero, print string static void PrintMessage(const u8 *str, u16 tile) { - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); if (tile) { sub_80A3FA0(&gBGTilemapBuffers[1][0], 2, 15, 26, 4, tile); @@ -145,7 +145,7 @@ static void PrintMessage(const u8 *str, u16 tile) static void sub_80F9090(u8 taskId) { - if (MenuUpdateWindowText() == TRUE) + if (Menu_UpdateWindowText() == TRUE) { gUnknown_0300074C(taskId); } @@ -196,7 +196,7 @@ static void PrintStringWithPalette(const u8 *str, u8 paletteNum, u8 left, u8 top StringCopy(gStringVar4, str); } - MenuPrint(gStringVar4, left, top); + Menu_PrintText(gStringVar4, left, top); } // unused @@ -209,7 +209,7 @@ void PrintNumberWithPalette(s32 value, u8 paletteNum, u8 n, u8 mode, u8 left, u8 } else { - MenuPrint(gStringVar1, left, top); + Menu_PrintText(gStringVar1, left, top); } } diff --git a/src/field/money.c b/src/field/money.c index d0f0ab1f6..4ab4de51c 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -143,7 +143,7 @@ void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y) if (stringWidth >= (size + 1) * 8) { - MenuPrint(buffer, x, y); + Menu_PrintText(buffer, x, y); } else { @@ -275,7 +275,7 @@ void UpdateMoneyWindow(u32 amount, u8 x, u8 y) void OpenMoneyWindow(u32 amount, u8 x, u8 y) { - MenuDrawTextWindow(x, y, x + 13, y + 3); + Menu_DrawStdWindowFrame(x, y, x + 13, y + 3); UpdateMoneyWindow(amount, x, y); LoadCompressedObjectPic(gUnknown_083CF584); @@ -288,7 +288,7 @@ void CloseMoneyWindow(u8 x, u8 y) { DestroySpriteAndFreeResources(&gSprites[gUnknown_02038734]); FreeSpritePaletteByTag(SPRITE_TAG_MONEY); - MenuZeroFillWindowRect(x, y, x + 13, y + 3); + Menu_EraseWindowRect(x, y, x + 13, y + 3); } bool8 HasEnoughMoneyFor(void) diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 790aede60..f589494f4 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -683,7 +683,7 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 8: - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C90); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C90); MultistepInitWindowTileData(&gUnknown_03004210, 1); gMain.state++; break; @@ -2676,26 +2676,26 @@ void PrintPartyMenuPromptText(u8 textId, u8 b) switch (b) { case 0: - MenuDrawTextWindow(0, 16, 23, 19); + Menu_DrawStdWindowFrame(0, 16, 23, 19); break; case 1: - MenuDrawTextWindow(0, 16, 19, 19); + Menu_DrawStdWindowFrame(0, 16, 19, 19); break; case 2: - MenuDrawTextWindow(0, 16, 22, 19); + Menu_DrawStdWindowFrame(0, 16, 22, 19); break; case 3: - MenuDrawTextWindow(0, 16, 18, 19); + Menu_DrawStdWindowFrame(0, 16, 18, 19); break; } - MenuPrint(PartyMenuPromptTexts[textId], 1, 17); + Menu_PrintText(PartyMenuPromptTexts[textId], 1, 17); } } void sub_806D5A4(void) { - MenuZeroFillWindowRect(0, 16, 29, 19); + Menu_EraseWindowRect(0, 16, 29, 19); } void sub_806D5B8(u8 monIndex) @@ -3313,7 +3313,7 @@ void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer) { u32 var1 = 0; CpuFastSet(&var1, gTileBuffer, 0x1000100); - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer); + sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer); CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128); } @@ -3423,7 +3423,7 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level) var1 = 0; CpuFastSet(&var1, gUnknown_02039460, 0x1000020); - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32); } @@ -3517,7 +3517,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) var = 0; CpuFastSet(&var, gUnknown_02039460, 0x1000040); - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64); } @@ -3667,7 +3667,7 @@ void ClosePartyPopupMenu(u8 index, const struct PartyPopupMenu *menu) SetPartyPopupMenuOffsets(index, &left, &top, menu); - MenuZeroFillWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1); + Menu_EraseWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1); HandleDestroyMenuCursors(); } @@ -3683,7 +3683,7 @@ u8 sub_806E834(const u8 *message, u8 arg1) gUnknown_0202E8F6 = 1; - MenuDrawTextWindow(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_DrawStdWindowFrame(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); MenuPrintMessage(message, WINDOW_LEFT + 1, 15); taskId = CreateTask(sub_806E884, 1); @@ -3694,11 +3694,11 @@ u8 sub_806E834(const u8 *message, u8 arg1) static void sub_806E884(u8 taskId) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gUnknown_0202E8F6 = 0; if (gTasks[taskId].data[0] == 0) - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); DestroyTask(taskId); } } @@ -3794,7 +3794,7 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) { u16 currentItem; - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); RemoveBagItem(ewram1C000.unk6, 1); if (AddBagItem(currentItem, 1) == TRUE) @@ -3823,7 +3823,7 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) return; if (selection == -1) PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); } gTasks[taskId].func = party_menu_link_mon_held_item_object; } @@ -3938,7 +3938,7 @@ void Task_LoseMailMessage(u8 taskId) { sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); } - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); gTasks[taskId].func = party_menu_link_mon_held_item_object; } else @@ -3947,8 +3947,8 @@ void Task_LoseMailMessage(u8 taskId) return; if (selection == -1) PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = party_menu_link_mon_held_item_object; } } @@ -3968,7 +3968,7 @@ void Task_TakeHeldMail(u8 taskId) if (selection == 0) { - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); if (TakeMailFromMon2(ewram1C000.pokemon) != 0xFF) sub_806E834(gOtherText_MailWasSent, 0); else @@ -3981,7 +3981,7 @@ void Task_TakeHeldMail(u8 taskId) return; if (selection == -1) PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); sub_806E834(gOtherText_MailRemovedMessageLost, 1); gTasks[taskId].func = Task_ConfirmLoseMailMessage; } @@ -4130,7 +4130,7 @@ void sub_806F390(u8 taskId) if (selection == 0) { - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); sub_806E834(gOtherText_WhichMoveToForget2, 1); gTasks[taskId].func = sub_806F44C; } @@ -4206,7 +4206,7 @@ void StopTryingToTeachMove_806F588(u8 taskId) void StopTryingToTeachMove_806F614(u8 taskId) { - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); sub_806E834(gStringVar4, 1); @@ -4228,7 +4228,7 @@ void StopTryingToTeachMove_806F6B4(u8 taskId) if (selection == 0) { - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); GetMonNickname(ewram1C000.pokemon, gStringVar1); StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); StringExpandPlaceholders(gStringVar4, gOtherText_DidNotLearnMove2); @@ -4241,7 +4241,7 @@ void StopTryingToTeachMove_806F6B4(u8 taskId) return; if (selection == -1) PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); GetMonNickname(ewram1C000.pokemon, gStringVar1); StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); @@ -4592,7 +4592,7 @@ void sub_8070088(u8 taskId) else { gUnknown_0202E8F4 = 1; - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); PlaySE(SE_KAIFUKU); PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 9); @@ -4649,12 +4649,12 @@ void CreateItemUseMoveMenu(u8 partyMonIndex) u8 i; r6 = 0; - MenuDrawTextWindow(19, 10, 29, 19); + Menu_DrawStdWindowFrame(19, 10, 29, 19); for (i = 0; i < 4; i++) { u16 move = GetMonData(&gPlayerParty[partyMonIndex], MON_DATA_MOVE1 + i); - MenuPrint(gMoveNames[move], 20, i * 2 + 11); + Menu_PrintText(gMoveNames[move], 20, i * 2 + 11); if (move != 0) r6++; } @@ -4666,12 +4666,12 @@ void Task_HandleItemUseMoveMenuInput(u8 taskId) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if (gMain.newKeys & A_BUTTON) { @@ -4714,16 +4714,16 @@ void DoPPRecoveryItemEffect(u8 taskId, u16 item, TaskFunc c) void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 10, 29, 19); + Menu_EraseWindowRect(19, 10, 29, 19); sub_806D5A4(); - gTasks[taskId].data[11] = GetMenuCursorPos(); + gTasks[taskId].data[11] = Menu_GetCursorPos(); DoRecoverPP(taskId); } void ItemUseMoveMenu_HandleCancel(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 10, 29, 19); + Menu_EraseWindowRect(19, 10, 29, 19); if (gMain.inBattle) gTasks[ewram1C000.unk4].func = HandleBattlePartyMenu; else @@ -4852,7 +4852,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) { u8 i; - MenuDrawTextWindow(11, 0, 29, 7); + Menu_DrawStdWindowFrame(11, 0, 29, 7); for (i = 0; i < NUM_STATS; i++) { @@ -4897,7 +4897,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) { movs r1, 0\n\ movs r2, 0x1D\n\ movs r3, 0x7\n\ - bl MenuDrawTextWindow\n\ + bl Menu_DrawStdWindowFrame\n\ movs r7, 0\n\ ldr r0, _0807092C @ =gStringVar1\n\ mov r10, r0\n\ @@ -4981,7 +4981,7 @@ _0807086C:\n\ mov r0, r10\n\ adds r1, r4, 0\n\ adds r2, r5, 0\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ adds r0, r7, 0x1\n\ lsls r0, 24\n\ lsrs r7, r0, 24\n\ @@ -5070,7 +5070,7 @@ void Task_RareCandy3(u8 taskId) u16 learnedMove; u16 evolutionSpecies; - MenuZeroFillWindowRect(11, 0, 29, 7); + Menu_EraseWindowRect(11, 0, 29, 7); learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, TRUE); ewram1B000.unk282 = 1; diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 928cb9689..7cbb20bad 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -217,7 +217,7 @@ void PlayerPC(void) static void InitPlayerPCMenu(u8 taskId) { - MenuDrawTextWindow(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); + Menu_DrawStdWindowFrame(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder); InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9); TASK.FUNC = PlayerPCProcessMenuInput; @@ -228,18 +228,18 @@ static void PlayerPCProcessMenuInput(u8 taskId) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if (gMain.newKeys & A_BUTTON) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - sPlayerPCMenuActions[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId); + sPlayerPCMenuActions[gPcItemMenuOptionOrder[Menu_GetCursorPos()]].func(taskId); } else if (gMain.newKeys & B_BUTTON) { @@ -262,7 +262,7 @@ static void PlayerPC_ItemStorage(u8 taskId) static void PlayerPC_Mailbox(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 10, 9); + Menu_EraseWindowRect(0, 0, 10, 9); eMailboxInfo.count = GetMailboxMailCount(); if (eMailboxInfo.count == 0) @@ -280,7 +280,7 @@ static void PlayerPC_Mailbox(u8 taskId) static void PlayerPC_Decoration(u8 var) { - MenuZeroFillWindowRect(0, 0, 10, 9); + Menu_EraseWindowRect(0, 0, 10, 9); DoPlayerPCDecoration(var); } @@ -288,7 +288,7 @@ static void PlayerPC_TurnOff(u8 taskId) { if (gPcItemMenuOptionsNum == 4) // if the option count is 4, we are at the bedroom PC and not player PC, so do gender specific handling. { - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0, 0x1D, 0x13); if (gSaveBlock2.playerGender == MALE) ScriptContext1_SetupScript(gBrendanHouse_TurnPCOff); @@ -297,7 +297,7 @@ static void PlayerPC_TurnOff(u8 taskId) } else { - MenuZeroFillWindowRect(0, 0, 10, 9); + Menu_EraseWindowRect(0, 0, 10, 9); EnableBothScriptContexts(); } DestroyTask(taskId); @@ -305,8 +305,8 @@ static void PlayerPC_TurnOff(u8 taskId) static void InitItemStorageMenu(u8 var) { - MenuZeroFillWindowRect(0, 0, 10, 9); - MenuDrawTextWindow(0, 0, 11, 9); + Menu_EraseWindowRect(0, 0, 10, 9); + Menu_DrawStdWindowFrame(0, 0, 11, 9); PrintMenuItems(1, 1, 4, (struct MenuAction *)gPCText_ItemPCOptionsText); InitMenu(0, 1, 1, 4, var, 10); ItemStorageMenuPrint(gPCText_OptionDescList[var]); @@ -314,8 +314,8 @@ static void InitItemStorageMenu(u8 var) static void ItemStorageMenuPrint(const u8 *textPtr) { - MenuFillWindowRectWithBlankTile(2, 15, 27, 18); - MenuPrint(textPtr, 2, 15); + Menu_BlankWindowRect(2, 15, 27, 18); + Menu_PrintText(textPtr, 2, 15); } static void ItemStorageMenuProcessInput(u8 var) @@ -323,19 +323,19 @@ static void ItemStorageMenuProcessInput(u8 var) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); - ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()]); + Menu_MoveCursor(-1); + ItemStorageMenuPrint(gPCText_OptionDescList[Menu_GetCursorPos()]); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); - ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()]); + Menu_MoveCursor(1); + ItemStorageMenuPrint(gPCText_OptionDescList[Menu_GetCursorPos()]); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gPCText_ItemPCOptionsText[GetMenuCursorPos()].func(var); + gPCText_ItemPCOptionsText[Menu_GetCursorPos()].func(var); } else if (gMain.newKeys & B_BUTTON) { @@ -368,7 +368,7 @@ static void ItemStorage_HandleReturnToProcessInput(u8 taskId) void ItemStorage_ReturnToMenuAfterDeposit(void) { - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); InitItemStorageMenu(ITEMPC_MENU_DEPOSIT); CreateTask(ItemStorage_HandleReturnToProcessInput, 0); pal_fill_black(); @@ -379,12 +379,12 @@ static void ItemStorage_Withdraw(u8 taskId) s16 *data = TASK.data; HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 9); + Menu_EraseWindowRect(0, 0, 11, 9); NUM_ITEMS = CountUsedPCItemSlots(); if (NUM_ITEMS != 0) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_WITHDRAW; PAGE_INDEX = 0; ITEMS_ABOVE_TOP = 0; @@ -401,12 +401,12 @@ static void ItemStorage_Toss(u8 taskId) s16 *data = TASK.data; HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 9); + Menu_EraseWindowRect(0, 0, 11, 9); NUM_ITEMS = CountUsedPCItemSlots(); if (NUM_ITEMS) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_TOSS; PAGE_INDEX = 0; ITEMS_ABOVE_TOP = 0; @@ -421,7 +421,7 @@ static void ItemStorage_Toss(u8 taskId) static void ItemStorage_Exit(u8 var) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 9); + Menu_EraseWindowRect(0, 0, 11, 9); ReshowPlayerPC(var); } @@ -450,7 +450,7 @@ static void ItemStorage_ProcessInput(u8 taskId) if(PAGE_INDEX != 0) // did the cursor move physically upwards? { PlaySE(SE_SELECT); - PAGE_INDEX = MoveMenuCursor(-1); + PAGE_INDEX = Menu_MoveCursor(-1); trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; if (SWITCH_MODE_ACTIVE == FALSE) // are we not currently switching items? { @@ -474,7 +474,7 @@ static void ItemStorage_ProcessInput(u8 taskId) ItemStorage_DrawBothListAndDescription(taskId); if (SWITCH_MODE_ACTIVE != FALSE) - MoveMenuCursor(0); // don't move the cursor. it's at the top of the page index, but not the true index. + Menu_MoveCursor(0); // don't move the cursor. it's at the top of the page index, but not the true index. } } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _0813A306 @@ -482,7 +482,7 @@ static void ItemStorage_ProcessInput(u8 taskId) if(PAGE_INDEX != NUM_PAGE_ITEMS - 1) { PlaySE(SE_SELECT); - PAGE_INDEX = MoveMenuCursor(1); + PAGE_INDEX = Menu_MoveCursor(1); trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; if(SWITCH_MODE_ACTIVE != FALSE) @@ -500,7 +500,7 @@ static void ItemStorage_ProcessInput(u8 taskId) ItemStorage_DrawBothListAndDescription(taskId); if (SWITCH_MODE_ACTIVE != FALSE) - MoveMenuCursor(0); + Menu_MoveCursor(0); } } else if(gMain.newKeys & SELECT_BUTTON) // _0813A3A0 @@ -565,8 +565,8 @@ static void ItemStorage_GoBackToPlayerPCMenu(u8 taskId) BuyMenuFreeMemory(); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); - MenuZeroFillWindowRect(0, 0, 29, 19); - MenuDisplayMessageBox(); + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DisplayDialogueFrame(); InitItemStorageMenu(TASK.CURRENT_ITEM_STORAGE_MENU); TASK.FUNC = ItemStorageMenuProcessInput; } @@ -603,7 +603,7 @@ static void ItemStorage_DoItemAction(u8 taskId) ItemStorage_PrintItemPcResponse(ITEMPC_HOW_MANY_TO_TOSS); } NUM_QUANTITY_ROLLER = 1; - MenuDrawTextWindow(6, 8, 13, 11); + Menu_DrawStdWindowFrame(6, 8, 13, 11); sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); TASK.FUNC = ItemStorage_HandleQuantityRolling; } @@ -652,7 +652,7 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId) else if(gMain.newKeys & A_BUTTON) // confirm quantity. { PlaySE(SE_SELECT); - MenuZeroFillWindowRect(6, 6, 0xD, 0xB); + Menu_EraseWindowRect(6, 6, 0xD, 0xB); if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) ItemStorage_DoItemWithdraw(taskId); @@ -662,7 +662,7 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId) else if(gMain.newKeys & B_BUTTON) // cancel quantity. { PlaySE(SE_SELECT); - MenuZeroFillWindowRect(6, 6, 0xD, 0xB); + Menu_EraseWindowRect(6, 6, 0xD, 0xB); StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); // why not use trueIndex? @@ -713,7 +713,7 @@ static void ItemStorage_DoItemToss(u8 taskId) static void ItemStorage_ResumeInputFromYesToss(u8 taskId) { - MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); ItemStorage_PrintItemPcResponse(ITEMPC_THREW_AWAY_ITEM); TASK.FUNC = ItemStorage_HandleRemoveItem; } @@ -722,7 +722,7 @@ static void ItemStorage_ResumeInputFromNoToss(u8 taskId) { s16 *data = TASK.data; - MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); @@ -765,7 +765,7 @@ static void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId) static void ItemStorage_HandleResumeProcessInput(u8 taskId) { - MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); ItemStorage_DrawBothListAndDescription(taskId); @@ -817,14 +817,14 @@ static void ItemStorage_DrawItemQuantity(u16 arg1, enum StringConvertMode arg2, sub_80A4164(gStringVar1, arg1, arg2, arg4); if(isSwapSelected != FALSE) - MenuPrint(gSelectedItemQuantityFormatText, 0x1A, arg3); + Menu_PrintText(gSelectedItemQuantityFormatText, 0x1A, arg3); else - MenuPrint(gNonSelectedItemQuantityFormatText, 0x1A, arg3); + Menu_PrintText(gNonSelectedItemQuantityFormatText, 0x1A, arg3); } static void ItemStorage_DrawItemVoidQuantity(u8 var) { - MenuPrint(gUnknown_08406330, 0x19, var); + Menu_PrintText(gUnknown_08406330, 0x19, var); } static void ItemStorage_DrawItemName(struct ItemSlot *itemSlot, u8 var, int isSwapSelected) @@ -832,9 +832,9 @@ static void ItemStorage_DrawItemName(struct ItemSlot *itemSlot, u8 var, int isSw CopyItemName(itemSlot->itemId, gStringVar1); if(isSwapSelected != FALSE) - MenuPrint(gSelectedItemFormattedText, 16, var); + Menu_PrintText(gSelectedItemFormattedText, 16, var); else - MenuPrint(gNonSelectedItemFormattedText, 16, var); + Menu_PrintText(gNonSelectedItemFormattedText, 16, var); } static void ItemStorage_DrawNormalItemEntry(struct ItemSlot *itemSlot, u8 var, int var2) @@ -900,7 +900,7 @@ static void ItemStorage_DrawItemList(u8 taskId) } if (i - ITEMS_ABOVE_TOP < 8) - MenuFillWindowRectWithBlankTile(16, yCoord + 4, 0x1C, 0x12); + Menu_BlankWindowRect(16, yCoord + 4, 0x1C, 0x12); if (ITEMS_ABOVE_TOP != 0) CreateVerticalScrollIndicators(0, 0xB8, 8); @@ -977,11 +977,11 @@ static void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var) sub_80F944C(); LoadScrollIndicatorPalette(); ItemStorage_LoadPalette(); - MenuDrawTextWindow(0xF, 0, 0x1D, 0x13); - MenuDrawTextWindow(0, 0xC, 0xE, 0x13); - MenuDrawTextWindow(0, 0, 0xB, 3); + Menu_DrawStdWindowFrame(0xF, 0, 0x1D, 0x13); + Menu_DrawStdWindowFrame(0, 0xC, 0xE, 0x13); + Menu_DrawStdWindowFrame(0, 0, 0xB, 3); ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[0].itemId); - MenuPrint(gPCText_ItemPCOptionsText[var].text, 1, 1); + Menu_PrintText(gPCText_ItemPCOptionsText[var].text, 1, 1); ItemStorage_DrawItemList(taskId); InitMenu(0, 0x10, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); } @@ -1037,22 +1037,22 @@ static void Mailbox_DrawMailList(u8 taskId) // taskId is unused for (i = eMailboxInfo.itemsAbove; i < eMailboxInfo.itemsAbove + eMailboxInfo.pageItems; i++) { yCoord = (i - eMailboxInfo.itemsAbove) * 2; - MenuFillWindowRectWithBlankTile(0x15, yCoord + 2, 0x1C, yCoord + 3); + Menu_BlankWindowRect(0x15, yCoord + 2, 0x1C, yCoord + 3); if (i == eMailboxInfo.count) { - MenuPrint(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); + Menu_PrintText(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); break; } else { StringCopy(gStringVar1, gSaveBlock1.mail[i + 6].playerName); SanitizeNameString(gStringVar1); - MenuPrint(gStringVar1, 0x15, yCoord + 2); + Menu_PrintText(gStringVar1, 0x15, yCoord + 2); } } if (i - eMailboxInfo.itemsAbove != 8) - MenuFillWindowRectWithBlankTile(0x15, yCoord + 4, 0x1C, 0x12); + Menu_BlankWindowRect(0x15, yCoord + 4, 0x1C, 0x12); if (eMailboxInfo.itemsAbove != 0) CreateVerticalScrollIndicators(0, 0xC8, 8); @@ -1069,10 +1069,10 @@ static void Mailbox_DrawMailboxMenu(u8 taskId) { sub_80F944C(); LoadScrollIndicatorPalette(); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - MenuDrawTextWindow(0, 0, 0x8, 0x3); - MenuPrint(gPCText_Mailbox, 1, 1); - MenuDrawTextWindow(0x14, 0, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0, 0x1D, 0x13); + Menu_DrawStdWindowFrame(0, 0, 0x8, 0x3); + Menu_PrintText(gPCText_Mailbox, 1, 1); + Menu_DrawStdWindowFrame(0x14, 0, 0x1D, 0x13); Mailbox_DrawMailList(taskId); InitMenu(0, 0x15, 2, eMailboxInfo.pageItems, eMailboxInfo.cursorPos, 8); } @@ -1087,7 +1087,7 @@ static void Mailbox_ProcessInput(u8 taskId) if(eMailboxInfo.cursorPos != 0) { PlaySE(SE_SELECT); - eMailboxInfo.cursorPos = MoveMenuCursor(-1); + eMailboxInfo.cursorPos = Menu_MoveCursor(-1); } else if(eMailboxInfo.itemsAbove != 0) { @@ -1101,7 +1101,7 @@ static void Mailbox_ProcessInput(u8 taskId) if(eMailboxInfo.cursorPos != eMailboxInfo.pageItems - 1) { PlaySE(SE_SELECT); - eMailboxInfo.cursorPos = MoveMenuCursor(1); + eMailboxInfo.cursorPos = Menu_MoveCursor(1); } else if(eMailboxInfo.itemsAbove + eMailboxInfo.cursorPos != eMailboxInfo.count) { @@ -1143,7 +1143,7 @@ static void Mailbox_CloseScrollIndicators(void) static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0, 0x1D, 0x13); StringCopy(gStringVar1, gSaveBlock1.mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos].playerName); SanitizeNameString(gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_WhatWillYouDoMail); @@ -1152,7 +1152,7 @@ static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) static void Mailbox_ReturnToPlayerPC(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0, 0x1D, 0x13); ReshowPlayerPC(taskId); } @@ -1164,7 +1164,7 @@ static void Mailbox_TurnOff(u8 taskId) static void Mailbox_PrintMailOptions(u8 taskId) // Mailbox_PrintMailOptions { - MenuDrawTextWindow(0, 0, 0xC, 0x9); + Menu_DrawStdWindowFrame(0, 0, 0xC, 0x9); PrintMenuItems(1, 1, 4, (struct MenuAction *)gMailboxMailOptions); InitMenu(0, 1, 1, 4, 0, 0xB); TASK.FUNC = Mailbox_MailOptionsProcessInput; @@ -1175,17 +1175,17 @@ static void Mailbox_MailOptionsProcessInput(u8 taskId) if(gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if(gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gMailboxMailOptions[GetMenuCursorPos()].func(taskId); + gMailboxMailOptions[Menu_GetCursorPos()].func(taskId); } else if(gMain.newKeys & B_BUTTON) { @@ -1233,7 +1233,7 @@ static void Mailbox_MoveToBag(u8 taskId) { HandleDestroyMenuCursors(); StringCopy(gStringVar1, gOtherText_MoveToBag); - MenuPrint(gHighlightedMoveToBagFormatText, 1, 3); // gHighlightedMoveToBagFormatText + Menu_PrintText(gHighlightedMoveToBagFormatText, 1, 3); // gHighlightedMoveToBagFormatText DisplayItemMessageOnField(taskId, gOtherText_MessageWillBeLost, Mailbox_DrawYesNoBeforeMove, 0); } @@ -1247,7 +1247,7 @@ static void Mailbox_DoMailMoveToBag(u8 taskId) { struct MailStruct *mail = &gSaveBlock1.mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos]; - MenuZeroFillWindowRect(0x14, 8, 0x1A, 0xD); + Menu_EraseWindowRect(0x14, 8, 0x1A, 0xD); if(AddBagItem(mail->itemId, 1) == FALSE) { @@ -1270,7 +1270,7 @@ static void Mailbox_DoMailMoveToBag(u8 taskId) static void Mailbox_ReturnToInputAfterNo(u8 taskId) // Mailbox_ReturnToInputAfterNo { - MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); + Menu_EraseWindowRect(0x14, 0x8, 0x1A, 0xD); Mailbox_DrawMailMenuAndDoProcessInput(taskId); } @@ -1326,7 +1326,7 @@ static void Mailbox_NoPokemonForMail(u8 taskId) static void Mailbox_Cancel(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 0xC, 0x9); + Menu_EraseWindowRect(0, 0, 0xC, 0x9); Mailbox_DrawMailMenuAndDoProcessInput(taskId); } diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 640d4731f..3ca359ef7 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -452,11 +452,11 @@ static void sub_810BB0C(void) static void sub_810BB30(void) { BasicInitMenuWindow(&gWindowConfig_81E6E34); - MenuPrint(gContestStatsText_Spicy, 2, 13); - MenuPrint(gContestStatsText_Dry, 2, 15); - MenuPrint(gContestStatsText_Sweet, 2, 17); - MenuPrint(gContestStatsText_Bitter, 8, 13); - MenuPrint(gContestStatsText_Sour, 8, 15); + Menu_PrintText(gContestStatsText_Spicy, 2, 13); + Menu_PrintText(gContestStatsText_Dry, 2, 15); + Menu_PrintText(gContestStatsText_Sweet, 2, 17); + Menu_PrintText(gContestStatsText_Bitter, 8, 13); + Menu_PrintText(gContestStatsText_Sour, 8, 15); } static void sub_810BB88(u8 a0) @@ -471,10 +471,10 @@ static void sub_810BB88(u8 a0) if (i == gUnknown_02039248.unk2) { buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0); - MenuPrint(gStringVar1, 15, y + 1); + Menu_PrintText(gStringVar1, 15, y + 1); if (i != a0 + 8) { - MenuZeroFillWindowRect(15, y + 3, 29, 18); + Menu_EraseWindowRect(15, y + 3, 29, 18); } break; } @@ -484,7 +484,7 @@ static void sub_810BB88(u8 a0) buf[2] = 0x06; buf += 3; ConvertIntToDecimalStringN(buf, sub_810C9B0(&gSaveBlock1.pokeblocks[i]), STR_CONV_MODE_RIGHT_ALIGN, 3); - MenuPrint(gStringVar1, 15, y + 1); + Menu_PrintText(gStringVar1, 15, y + 1); } } @@ -600,11 +600,11 @@ static void sub_810BDAC(bool8 flag) if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1); - MenuPrint(gStringVar1, 11, 17); + Menu_PrintText(gStringVar1, 11, 17); } else { - MenuZeroFillWindowRect(11, 17, 12, 18); + Menu_EraseWindowRect(11, 17, 12, 18); } } @@ -813,7 +813,7 @@ static void sub_810C368(u8 taskId) sub_80F98A4(0); sub_80F98A4(1); BasicInitMenuWindow(&gWindowConfig_81E6E50); - MenuDrawTextWindow(7, v0 + 4, 13, 11); + Menu_DrawStdWindowFrame(7, v0 + 4, 13, 11); PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); gSpecialVar_ItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; @@ -824,24 +824,24 @@ static void sub_810C40C(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (GetMenuCursorPos()) + if (Menu_GetCursorPos()) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (GetMenuCursorPos() != gUnknown_0203924C - 1) + if (Menu_GetCursorPos() != gUnknown_0203924C - 1) { PlaySE(SE_SELECT); - MoveMenuCursor(+1); + Menu_MoveCursor(+1); } } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gUnknown_083F7EF4[gUnknown_03000758[GetMenuCursorPos()]].func(taskId); + gUnknown_083F7EF4[gUnknown_03000758[Menu_GetCursorPos()]].func(taskId); } else if (gMain.newKeys & B_BUTTON) { @@ -870,7 +870,7 @@ static void sub_810C540(u8 taskId) { BasicInitMenuWindow(&gWindowConfig_81E6E50); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(7, 4, 13, 11); + Menu_EraseWindowRect(7, 4, 13, 11); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]); StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C5EC, 0); @@ -890,7 +890,7 @@ static void sub_810C5EC(u8 taskId) static void sub_810C610(u8 taskId) { - MenuZeroFillWindowRect(7, 6, 13, 11); + Menu_EraseWindowRect(7, 6, 13, 11); PokeblockClearIfExists((gUnknown_02039248.unk0 + gUnknown_02039248.unk1)); StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0); @@ -907,8 +907,8 @@ static void sub_810C668(u8 taskId) sub_80F979C(1, 0); } BasicInitMenuWindow(&gWindowConfig_81E6E50); - MenuZeroFillWindowRect(7, 6, 13, 11); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(7, 6, 13, 11); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_810BF7C; } @@ -933,7 +933,7 @@ static void sub_810C748(u8 taskId) StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(7, 4, 13, 11); + Menu_EraseWindowRect(7, 4, 13, 11); gTasks[taskId].func = sub_810BF7C; } diff --git a/src/field/region_map.c b/src/field/region_map.c index 07e77e389..1eb57b803 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1544,7 +1544,7 @@ void CB2_InitFlyRegionMap(void) break; case 2: InitMenuWindow(&gWindowConfig_81E7224); - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 3: InitRegionMap(&ewram0_3.regionMap, 0); @@ -1619,8 +1619,8 @@ static void PrintFlyTargetName(void) { if (FlagGet(r4->flag)) { - MenuDrawTextWindow(16, 14, 29, 19); - MenuPrint(ewram0_3.regionMap.mapSectionName, 17, 15); + Menu_DrawStdWindowFrame(16, 14, 29, 19); + Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 15); MenuPrint_RightAligned(r4->unk0[ewram0_3.regionMap.everGrandeCityArea], 29, 17); return; } @@ -1631,16 +1631,16 @@ static void PrintFlyTargetName(void) asm("mov %0, #0\n":"=r"(zero)); // zero = 0 if (zero == 0) { - MenuDrawTextWindow(16, 16, 29, 19); - MenuPrint(ewram0_3.regionMap.mapSectionName, 17, 17); - MenuZeroFillWindowRect(16, 14, 29, 15); + Menu_DrawStdWindowFrame(16, 16, 29, 19); + Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 17); + Menu_EraseWindowRect(16, 14, 29, 15); } } else { - MenuDrawTextWindow(16, 16, 29, 19); - MenuPrint(ewramBlankMapName, 17, 17); - MenuZeroFillWindowRect(16, 14, 29, 15); + Menu_DrawStdWindowFrame(16, 16, 29, 19); + Menu_PrintText(ewramBlankMapName, 17, 17); + Menu_EraseWindowRect(16, 14, 29, 15); } } diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index 05a909e81..e795fd8ed 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -1333,7 +1333,7 @@ bool8 ScrCmd_drawbox(struct ScriptContext *ctx) u8 right = ScriptReadByte(ctx); u8 bottom = ScriptReadByte(ctx); - MenuDrawTextWindow(left, top, right, bottom); + Menu_DrawStdWindowFrame(left, top, right, bottom); return FALSE; } @@ -1363,7 +1363,7 @@ bool8 ScrCmd_erasebox(struct ScriptContext *ctx) u8 right = ScriptReadByte(ctx); u8 bottom = ScriptReadByte(ctx); - MenuZeroFillWindowRect(left, top, right, bottom); + Menu_EraseWindowRect(left, top, right, bottom); return FALSE; } @@ -1428,8 +1428,8 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) u8 v6 = ptr[4]; u8 v7 = ptr[5]; StringBraille(gStringVar4, ptr + 6); - MenuDrawTextWindow(v2, v3, v4, v5); - MenuPrint(gStringVar4, v6, v7); + Menu_DrawStdWindowFrame(v2, v3, v4, v5); + Menu_PrintText(gStringVar4, v6, v7); return FALSE; } diff --git a/src/field/script_menu.c b/src/field/script_menu.c index 9f3ab75cc..bf6e93e41 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -622,7 +622,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ig static u16 GetStringWidthInTilesForScriptMenu(const u8 *str) { // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. - return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8; + return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowConfig_81E6CE4, str) + 7) / 8; } static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos) @@ -651,7 +651,7 @@ static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuActi bottom = top + (2 * count + 1); - MenuDrawTextWindow(left, top, right, bottom); + Menu_DrawStdWindowFrame(left, top, right, bottom); PrintMenuItems(left + 1, top + 1, count, list); InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1); StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); @@ -687,9 +687,9 @@ static void Task_HandleMultichoiceInput(u8 taskId) if (!gPaletteFade.active) { if (!gTasks[taskId].tDoWrap) - selection = ProcessMenuInputNoWrap(); + selection = Menu_ProcessInputNoWrap(); else - selection = ProcessMenuInput(); + selection = Menu_ProcessInput(); if (selection != -2) { @@ -705,7 +705,7 @@ static void Task_HandleMultichoiceInput(u8 taskId) gSpecialVar_Result = selection; } HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); + Menu_EraseWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -788,7 +788,7 @@ static void Task_HandleYesNoInput(u8 taskId) return; } - switch (ProcessMenuInputNoWrap()) + switch (Menu_ProcessInputNoWrap()) { case -2: return; @@ -805,7 +805,7 @@ static void Task_HandleYesNoInput(u8 taskId) left = gTasks[taskId].tLeft; top = gTasks[taskId].tTop; - MenuZeroFillWindowRect(left, top, left + 6, top + 5); + Menu_EraseWindowRect(left, top, left + 6, top + 5); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -851,7 +851,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPr static void Task_HandleMultichoiceGridInput(u8 taskId) { - s8 selection = sub_80727CC(); + s8 selection = Menu_ProcessInputGridLayout(); if (selection != -2) { @@ -867,7 +867,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId) gSpecialVar_Result = selection; } HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); + Menu_EraseWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -909,23 +909,23 @@ void ScriptMenu_CreatePCMenu(void) if (FlagGet(FLAG_SYS_GAME_CLEAR)) // player has cleared game? { numChoices = 4; - MenuDrawTextWindow(0, 0, width + 2, 9); - MenuPrint(gPCText_HallOfFame, 1, 5); - MenuPrint(gPCText_LogOff, 1, 7); + Menu_DrawStdWindowFrame(0, 0, width + 2, 9); + Menu_PrintText(gPCText_HallOfFame, 1, 5); + Menu_PrintText(gPCText_LogOff, 1, 7); } else { numChoices = 3; - MenuDrawTextWindow(0, 0, width + 2, 7); - MenuPrint(gPCText_LogOff, 1, 5); + Menu_DrawStdWindowFrame(0, 0, width + 2, 7); + Menu_PrintText(gPCText_LogOff, 1, 5); } if (FlagGet(FLAG_SYS_PC_LANETTE)) // player met lanette? - MenuPrint(gPCText_LanettesPC, 1, 1); + Menu_PrintText(gPCText_LanettesPC, 1, 1); else - MenuPrint(gPCText_SomeonesPC, 1, 1); + Menu_PrintText(gPCText_SomeonesPC, 1, 1); - MenuPrint(gPCText_PlayersPC, 1, 3); + Menu_PrintText(gPCText_PlayersPC, 1, 3); InitMenu(0, 1, 1, numChoices, 0, width + 1); StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); } @@ -1008,15 +1008,15 @@ _080B57B4:\n\ movs r0, 0\n\ movs r1, 0\n\ movs r3, 0x9\n\ - bl MenuDrawTextWindow\n\ + bl Menu_DrawStdWindowFrame\n\ ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ movs r1, 0x1\n\ movs r2, 0x5\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ldr r0, _080B57F0 @ =gPCText_LogOff\n\ movs r1, 0x1\n\ movs r2, 0x7\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ b _080B5818\n\ .align 2, 0\n\ _080B57E8: .4byte gPCText_SomeonesPC\n\ @@ -1032,11 +1032,11 @@ _080B57FC:\n\ movs r0, 0\n\ movs r1, 0\n\ movs r3, 0x7\n\ - bl MenuDrawTextWindow\n\ + bl Menu_DrawStdWindowFrame\n\ ldr r0, _080B5834 @ =gPCText_LogOff\n\ movs r1, 0x1\n\ movs r2, 0x5\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ _080B5818:\n\ adds r6, r4, 0\n\ ldr r0, _080B5838 @ =0x0000084b\n\ @@ -1047,7 +1047,7 @@ _080B5818:\n\ ldr r0, _080B583C @ =gPCText_LanettesPC\n\ movs r1, 0x1\n\ movs r2, 0x1\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ b _080B584A\n\ .align 2, 0\n\ _080B5834: .4byte gPCText_LogOff\n\ @@ -1057,12 +1057,12 @@ _080B5840:\n\ ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\ movs r1, 0x1\n\ movs r2, 0x1\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ _080B584A:\n\ ldr r0, _080B588C @ =gPCText_PlayersPC\n\ movs r1, 0x1\n\ movs r2, 0x3\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ movs r4, 0\n\ str r4, [sp]\n\ adds r0, r5, 0x1\n\ @@ -1096,8 +1096,8 @@ _080B588C: .4byte gPCText_PlayersPC\n\ void ScriptMenu_DisplayPCStartupPrompt(void) { - MenuDisplayMessageBox(); - MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gPCText_WhichPCShouldBeAccessed, 2, 15); } #define tState data[0] @@ -1122,7 +1122,7 @@ static void Task_PokemonPicWindow(u8 taskId) task->tState++; break; case 3: - MenuZeroFillWindowRect(task->tWindowX, task->tWindowY, task->tWindowX + 9, task->tWindowY + 10); + Menu_EraseWindowRect(task->tWindowX, task->tWindowY, task->tWindowX + 9, task->tWindowY + 10); DestroyTask(taskId); break; } @@ -1139,7 +1139,7 @@ bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y) } else { - MenuDrawTextWindow(x, y, x + 9, y + 10); + Menu_DrawStdWindowFrame(x, y, x + 9, y + 10); taskId = CreateTask(Task_PokemonPicWindow, 0x50); gTasks[taskId].tState = 0; gTasks[taskId].tMonSpecies = species; diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 2e4138a3b..16c2f57c2 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -913,7 +913,7 @@ void Task_SecretBasePC_Registry(u8 taskId) taskData[1] = 0; taskData[2] = 0; - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC7D8(taskId); gTasks[taskId].func = sub_80BC824; @@ -948,8 +948,8 @@ void sub_80BC6B0(u8 taskId) if (sub_80BC268(i) == TRUE) { sub_80BC190(gStringVar1, i); - MenuFillWindowRectWithBlankTile(18, 2 * n + 2, 28, 2 * n + 3); - MenuPrint(gStringVar1, 18, 2 * n + 2); + Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); + Menu_PrintText(gStringVar1, 18, 2 * n + 2); if (++n == 8) break; } @@ -957,11 +957,11 @@ void sub_80BC6B0(u8 taskId) if (n < 8) { - MenuFillWindowRectWithBlankTile(18, 2 * n + 2, 28, 2 * n + 3); - MenuPrint(gUnknownText_Exit, 18, 2 * n + 2); + Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); + Menu_PrintText(gUnknownText_Exit, 18, 2 * n + 2); DestroyVerticalScrollIndicator(1); if (n != 7) - MenuFillWindowRectWithBlankTile(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match + Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match } else CreateVerticalScrollIndicators(1, 0xbc, 0x98); @@ -975,7 +975,7 @@ void sub_80BC6B0(u8 taskId) void sub_80BC7D8(u8 taskId) { u16 *taskData = gTasks[taskId].data; - MenuDrawTextWindow(17, 0, 29, 19); + Menu_DrawStdWindowFrame(17, 0, 29, 19); InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); sub_80BC6B0(taskId); @@ -990,7 +990,7 @@ void sub_80BC824(u8 taskId) if (taskData[1]) { PlaySE(5); - taskData[1] = MoveMenuCursor(-1); + taskData[1] = Menu_MoveCursor(-1); } else if (taskData[2]) { @@ -1013,7 +1013,7 @@ void sub_80BC824(u8 taskId) else { PlaySE(5); - taskData[1] = MoveMenuCursor(1); + taskData[1] = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -1022,7 +1022,7 @@ void sub_80BC824(u8 taskId) if (taskData[1] + taskData[2] == taskData[0]) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } else @@ -1036,7 +1036,7 @@ void sub_80BC824(u8 taskId) { PlaySE(5); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } } @@ -1066,7 +1066,7 @@ void sub_80BC980(u8 taskId) { PauseVerticalScrollIndicator(0); PauseVerticalScrollIndicator(1); - MenuDrawTextWindow(1, 0, 12, 5); + Menu_DrawStdWindowFrame(1, 0, 12, 5); PrintMenuItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); InitMenu(0, 2, 1, 2, 0, 10); gTasks[taskId].func = sub_80BC9E4; @@ -1076,24 +1076,24 @@ void sub_80BC9E4(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (GetMenuCursorPos()) + if (Menu_GetCursorPos()) { PlaySE(5); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (GetMenuCursorPos() != 1) + if (Menu_GetCursorPos() != 1) { PlaySE(5); - MoveMenuCursor(1); + Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) { PlaySE(5); - gUnknown_083D13D4[GetMenuCursorPos()].func(taskId); + gUnknown_083D13D4[Menu_GetCursorPos()].func(taskId); } else if (gMain.newKeys & B_BUTTON) { @@ -1109,7 +1109,7 @@ void sub_80BCA84(u8 taskId) DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC190(gStringVar1, taskData[4]); StringExpandPlaceholders(gStringVar4, gOtherText_OkayToDeleteFromRegistry); @@ -1126,7 +1126,7 @@ void sub_80BCB10(u8 taskId) { s16 *taskData = gTasks[taskId].data; - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSaveBlock1.secretBases[taskData[4]].sbr_field_1_6 = 0; taskData[0]--; @@ -1147,13 +1147,13 @@ void sub_80BCB10(u8 taskId) void sub_80BCB90(u8 taskId) { - MenuZeroFillWindowRect(20, 8, 26, 13); + Menu_EraseWindowRect(20, 8, 26, 13); DisplayItemMessageOnField(taskId, gOtherText_RegisteredDataDeleted, sub_80BCB10, 0); } void sub_80BCBC0(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC7D8(taskId); gTasks[taskId].func = sub_80BC824; @@ -1164,7 +1164,7 @@ void sub_80BCBF8(u8 taskId) s16 *taskData = gTasks[taskId].data; InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); - MenuZeroFillWindowRect(1, 0, 12, 5); + Menu_EraseWindowRect(1, 0, 12, 5); StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); diff --git a/src/field/shop.c b/src/field/shop.c index 23d668fc7..0d8bc83d1 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -84,13 +84,13 @@ u8 CreateShopMenu(u8 martType) if (martType == MART_TYPE_0) { gMartInfo.numChoices = 2; - MenuDrawTextWindow(0, 0, 10, 7); + Menu_DrawStdWindowFrame(0, 0, 10, 7); PrintMenuItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); } else { gMartInfo.numChoices = 1; - MenuDrawTextWindow(0, 0, 10, 5); + Menu_DrawStdWindowFrame(0, 0, 10, 5); PrintMenuItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); } InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel @@ -126,7 +126,7 @@ void sub_80B2E38(u8 var) if (gMartInfo.cursor) // can move cursor up? { PlaySE(SE_SELECT); - gMartInfo.cursor = MoveMenuCursor(-1); + gMartInfo.cursor = Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) @@ -134,7 +134,7 @@ void sub_80B2E38(u8 var) if (gMartInfo.cursor != gMartInfo.numChoices) // can move cursor down? { PlaySE(SE_SELECT); - gMartInfo.cursor = MoveMenuCursor(1); + gMartInfo.cursor = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -175,7 +175,7 @@ void sub_80B2F30(u8 taskId) void HandleShopMenuQuit(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 8); + Menu_EraseWindowRect(0, 0, 11, 8); sub_80BE3BC(); ScriptContext2_Disable(); DestroyTask(taskId); @@ -290,7 +290,7 @@ void BuyMenuDrawGraphics(void) BuyMenuDrawMapGraphics(); gMartInfo.cursor = zero; gMartInfo.choicesAbove = zero2; - MenuZeroFillWindowRect(0, 0, 0x20, 0x20); + Menu_EraseWindowRect(0, 0, 0x20, 0x20); OpenMoneyWindow(gSaveBlock1.money, 0, 0); sub_80B3764(0, 7); sub_80B37EC(); @@ -532,7 +532,7 @@ void sub_80B37F8(u8 taskId) gStringVar1[1] = 0x14; gStringVar1[2] = 0x6; ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2); - MenuPrint(gOtherText_xString1, 1, 11); + Menu_PrintText(gOtherText_xString1, 1, 11); sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); } @@ -604,8 +604,8 @@ void sub_80B39D0(int var1, int var2, bool32 hasControlCode) if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount) { - MenuFillWindowRectWithBlankTile(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3); - MenuPrint(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2); + Menu_BlankWindowRect(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3); + Menu_PrintText(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2); } } @@ -659,7 +659,7 @@ void sub_80B3BD0(u8 taskId) void sub_80B3BF4(u8 taskId) { - MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); sub_80B379C(); sub_80B3420(); @@ -706,7 +706,7 @@ void sub_80B3D38(u8 taskId) void sub_80B3D7C(u8 taskId) { sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); - MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); sub_80B4378(taskId); } @@ -719,7 +719,7 @@ void sub_80B3DC8(u8 taskId) if (gMain.newKeys & A_BUTTON) { gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase. - MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); sub_80B379C(); sub_80B3420(); @@ -741,7 +741,7 @@ void sub_80B3EFC(u8 taskId) u16 var; gTasks[taskId].data[1] = 1; - MenuDrawTextWindow(0, 0xA, 0xD, 0xD); + Menu_DrawStdWindowFrame(0, 0xA, 0xD, 0xD); sub_80B37F8(taskId); var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); @@ -1049,7 +1049,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor. { PlaySE(SE_SELECT); - gMartInfo.cursor = MoveMenuCursor(-1); // move cursor up + gMartInfo.cursor = Menu_MoveCursor(-1); // move cursor up sub_80B3A70(); } } @@ -1070,7 +1070,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction else if (gMartInfo.cursor != gMartInfo.itemCount) { PlaySE(SE_SELECT); - gMartInfo.cursor = MoveMenuCursor(1); + gMartInfo.cursor = Menu_MoveCursor(1); sub_80B3A70(); } } @@ -1085,7 +1085,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction sub_80F979C(1, 1); sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0xC, 0xD, 0x13); + Menu_EraseWindowRect(0, 0xC, 0xD, 0x13); if (gMartInfo.martType == MART_TYPE_0) { @@ -1139,8 +1139,8 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction void sub_80B4378(u8 taskId) { - MenuZeroFillWindowRect(0, 0xE, 0x1D, 0x13); - MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + Menu_EraseWindowRect(0, 0xE, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); sub_80B3420(); sub_80B3764(6, 7); diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index a524790b4..3c13e004c 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -584,8 +584,8 @@ static bool8 sub_8101E3C(struct Task *task) static void sub_8101F2C(const u8 *str) { - MenuDisplayMessageBox(); - MenuPrint(str, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(str, 2, 15); } static bool8 sub_8101F44(struct Task *task) @@ -599,7 +599,7 @@ static bool8 sub_8101F60(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - MenuZeroFillScreen(); + Menu_EraseScreen(); eSlotMachine->state = 5; } return FALSE; @@ -853,7 +853,7 @@ static bool8 sub_8102344(struct Task *task) s8 input = ProcessMenuInputNoWrap_(); if (input == 0) { - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_8103D8C(0); sub_8103D8C(1); sub_8103D8C(2); @@ -862,7 +862,7 @@ static bool8 sub_8102344(struct Task *task) } else if (input == 1 || input == -1) { - MenuZeroFillScreen(); + Menu_EraseScreen(); eSlotMachine->state = 5; } return FALSE; @@ -879,7 +879,7 @@ static bool8 sub_81023B8(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - MenuZeroFillScreen(); + Menu_EraseScreen(); eSlotMachine->state = 5; } return FALSE; @@ -896,7 +896,7 @@ static bool8 sub_81023FC(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - MenuZeroFillScreen(); + Menu_EraseScreen(); eSlotMachine->state = 27; } return FALSE; @@ -2824,7 +2824,7 @@ static void sub_8104BC8(struct Task *task) static void sub_8104BFC(struct Task *task) { - MenuZeroFillScreen(); + Menu_EraseScreen(); BasicInitMenuWindow(&gWindowConfig_81E7128); sub_81064B8(); sub_8104CAC(task->data[1]); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index dccf1714e..6c2812039 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -193,8 +193,8 @@ static void BuildStartMenuActions_Link(void) static void DisplaySafariBallsWindow(void) { sub_8072C44(gStringVar1, gNumSafariBalls, 12, 1); - MenuDrawTextWindow(0, 0, 10, 5); - MenuPrint(gOtherText_SafariStock, 1, 1); + Menu_DrawStdWindowFrame(0, 0, 10, 5); + Menu_PrintText(gOtherText_SafariStock, 1, 1); } //Prints n menu items starting at *index @@ -204,7 +204,7 @@ static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n) do { - MenuPrint(sStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2); + Menu_PrintText(sStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2); _index++; if (_index >= sNumStartMenuActions) { @@ -226,7 +226,7 @@ static bool32 InitStartMenuMultistep(s16 *step, s16 *index) (*step)++; break; case 2: - MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3); + Menu_DrawStdWindowFrame(22, 0, 29, sNumStartMenuActions * 2 + 3); *index = 0; (*step)++; break; @@ -310,12 +310,12 @@ static u8 StartMenu_InputProcessCallback(void) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - sStartMenuCursorPos = MoveMenuCursor(-1); + sStartMenuCursorPos = Menu_MoveCursor(-1); } if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - sStartMenuCursorPos = MoveMenuCursor(1); + sStartMenuCursorPos = Menu_MoveCursor(1); } if (gMain.newKeys & A_BUTTON) { @@ -473,13 +473,13 @@ static u8 SaveCallback2(void) return FALSE; case SAVE_CANCELED: //Go back to start menu - MenuZeroFillScreen(); + Menu_EraseScreen(); InitStartMenu(); gCallback_03004AE8 = StartMenu_InputProcessCallback; return FALSE; case SAVE_SUCCESS: case SAVE_ERROR: - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_8064E2C(); ScriptContext2_Disable(); return TRUE; @@ -498,7 +498,7 @@ static u8 RunSaveDialogCallback(void) { if (savingComplete) { - if (!MenuUpdateWindowText()) + if (!Menu_UpdateWindowText()) return 0; } savingComplete = FALSE; @@ -514,7 +514,7 @@ void ScrSpecial_DoSaveDialog(void) static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void)) { StringExpandPlaceholders(gStringVar4, ptr); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); MenuPrintMessageDefaultCoords(gStringVar4); savingComplete = TRUE; saveDialogCallback = func; @@ -547,7 +547,7 @@ static void sub_8071700(void) static void HideSaveDialog(void) { - MenuZeroFillWindowRect(20, 8, 26, 13); + Menu_EraseWindowRect(20, 8, 26, 13); } static void SaveDialogStartTimeout(void) @@ -579,7 +579,7 @@ static bool8 SaveDialogCheckForTimeoutAndKeypress(void) static u8 SaveDialogCB_DisplayConfirmMessage(void) { - MenuZeroFillScreen(); + Menu_EraseScreen(); HandleDrawSaveWindowInfo(0, 0); DisplaySaveMessageWithCallback(gSaveText_WouldYouLikeToSave, SaveDialogCB_DisplayConfirmYesNoMenu); return SAVE_IN_PROGRESS; @@ -694,7 +694,7 @@ static u8 SaveDialogCB_DoSave(void) static u8 SaveDialogCB_SaveSuccess(void) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { PlaySE(SE_SAVE); saveDialogCallback = SaveDialogCB_ReturnSuccess; @@ -715,7 +715,7 @@ static u8 SaveDialogCB_ReturnSuccess(void) static u8 SaveDialogCB_SaveError(void) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { PlaySE(SE_BOO); saveDialogCallback = SaveDialogCB_ReturnError; @@ -821,8 +821,8 @@ static void Task_8071B64(u8 taskId) switch (*step) { case 0: - MenuDisplayMessageBox(); - MenuPrint(gSystemText_Saving, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gSystemText_Saving, 2, 15); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); (*step)++; break; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 701d4087a..d4994d701 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -355,8 +355,8 @@ static void MainCallback2(void) static void Task_StarterChoose1(u8 taskId) { CreateStarterPokemonLabel(0xFF, gTasks[taskId].tStarterSelection); - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gOtherText_BirchInTrouble, 3, 15); + Menu_DrawStdWindowFrame(2, 14, 27, 19); + Menu_PrintText(gOtherText_BirchInTrouble, 3, 15); gTasks[taskId].func = Task_StarterChoose2; } @@ -368,7 +368,7 @@ static void Task_StarterChoose2(u8 taskId) { u8 spriteId; - MenuZeroFillWindowRect( + Menu_EraseWindowRect( gStarterChoose_LabelCoords[selection][0], gStarterChoose_LabelCoords[selection][1], gStarterChoose_LabelCoords[selection][0] + 13, @@ -424,9 +424,9 @@ static void Task_StarterChoose3(u8 taskId) static void Task_StarterChoose4(u8 taskId) { PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0); - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); //"Do you choose this POKEMON?" - MenuPrint(gOtherText_DoYouChoosePoke, 3, 15); + Menu_PrintText(gOtherText_DoYouChoosePoke, 3, 15); DisplayYesNoMenu(21, 7, 1); gTasks[taskId].func = Task_StarterChoose5; } @@ -445,7 +445,7 @@ static void Task_StarterChoose5(u8 taskId) case 1: // NO case -1: // B button PlaySE(SE_SELECT); - MenuZeroFillWindowRect(21, 7, 27, 12); + Menu_EraseWindowRect(21, 7, 27, 12); spriteId = gTasks[taskId].tPkmnSpriteId; FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); @@ -498,7 +498,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) if (prevSelection != 0xFF) { //Remove the old Pokemon label - MenuZeroFillWindowRect( + Menu_EraseWindowRect( gStarterChoose_LabelCoords[prevSelection][0], gStarterChoose_LabelCoords[prevSelection][1], gStarterChoose_LabelCoords[prevSelection][0] + 13, @@ -527,7 +527,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) //Copy POKEMON string to label StringCopy(labelText + dstIndex, gOtherText_Poke); - MenuPrint( + Menu_PrintText( labelText, gStarterChoose_LabelCoords[selection][0], gStarterChoose_LabelCoords[selection][1]); @@ -535,7 +535,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) //Copy Pokemon name to label sub_8072C74(labelText + 5, gSpeciesNames[species], 0x6B, 1); - MenuPrint( + Menu_PrintText( labelText, gStarterChoose_LabelCoords[selection][0], gStarterChoose_LabelCoords[selection][1] + 2); @@ -574,7 +574,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) adds r3, r1, 0x3\n\ lsls r3, 24\n\ lsrs r3, 24\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ ldr r0, _0810A964 @ =0x04000040\n\ movs r1, 0\n\ strh r1, [r0]\n\ @@ -649,7 +649,7 @@ _0810A8CA:\n\ mov r0, sp\n\ adds r1, r4, 0\n\ adds r2, r5, 0\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ mov r0, sp\n\ movs r1, 0\n\ movs r2, 0xF\n\ @@ -669,7 +669,7 @@ _0810A8CA:\n\ lsrs r2, 24\n\ mov r0, sp\n\ adds r1, r4, 0\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ lsls r0, r4, 3\n\ adds r0, 0x4\n\ lsls r0, 24\n\ diff --git a/src/field/trader.c b/src/field/trader.c index 61cb0b4a2..eb0c8a934 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -100,7 +100,7 @@ void CreateAvailableDecorationsMenu(u8 taskId) } } - MenuDrawTextWindow(0, 1, 12, numChoices * 2 + 2); + Menu_DrawStdWindowFrame(0, 1, 12, numChoices * 2 + 2); for (i = 0; i < 4; i++) { @@ -108,18 +108,18 @@ void CreateAvailableDecorationsMenu(u8 taskId) { if (trader->unk1[i] > DECOR_REGISTEEL_DOLL) { - MenuPrint(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2); + Menu_PrintText(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2); } else { - MenuPrint(gDecorations[trader->unk1[i]].name, 1, numDecorations * 2 + 2); + Menu_PrintText(gDecorations[trader->unk1[i]].name, 1, numDecorations * 2 + 2); } numDecorations++; } } - MenuPrint(gOtherText_CancelNoTerminator, 1, numDecorations * 2 + 2); + Menu_PrintText(gOtherText_CancelNoTerminator, 1, numDecorations * 2 + 2); InitMenu(0, 1, 2, numChoices, 0, 11); gTasks[taskId].data[1] = numDecorations; } @@ -136,7 +136,7 @@ void sub_8109B34(u8 taskId, u8 decorationId) } HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 1, 12, 12); + Menu_EraseWindowRect(0, 1, 12, 12); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -148,17 +148,17 @@ void Task_HandleGetDecorationMenuInput(u8 taskId) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gSpecialVar_0x8005 = GetMenuCursorPos(); + gSpecialVar_0x8005 = Menu_GetCursorPos(); if (gTasks[taskId].data[1] == gSpecialVar_0x8005) { sub_8109B34(taskId, 0); @@ -216,7 +216,7 @@ void ScrSpecial_TraderMenuGiveDecoration(void) void sub_8109D04(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); sub_80F9520(gUnknown_020388F7, 8); @@ -238,7 +238,7 @@ void sub_8109D04(u8 taskId) void sub_8109DAC(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSpecialVar_0x8006 = 0; DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 7253ac901..6e71011b9 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -611,18 +611,18 @@ static void sub_8136BB8(void) StringGetEnd10(gUnknown_02039304->stringBuffer); StringAppend(gUnknown_02039304->stringBuffer, gOtherText_GetsAPokeBlock); BasicInitMenuWindow(&gWindowConfig_81E709C); - MenuDrawTextWindow(0, 16, 29, 19); - MenuPrint(gUnknown_02039304->stringBuffer, 1, 17); + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(gUnknown_02039304->stringBuffer, 1, 17); DisplayYesNoMenu(23, 10, 1); - MoveMenuCursor(0); + Menu_MoveCursor(0); } static s8 sub_8136C40(void) { - s8 retval = ProcessMenuInputNoWrap(); + s8 retval = Menu_ProcessInputNoWrap(); if ((u8)(retval + 1) < 3) { - MenuZeroFillScreen(); + Menu_EraseScreen(); BasicInitMenuWindow(&gWindowConfig_81E7080); } return retval; @@ -631,7 +631,7 @@ static s8 sub_8136C40(void) static void sub_8136C6C(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); - MenuDrawTextWindow(0, 16, 29, 19); + Menu_DrawStdWindowFrame(0, 16, 29, 19); for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); if (gUnknown_02039304->unk53 < 5) { @@ -668,20 +668,20 @@ static bool8 sub_8136D00(void) static void sub_8136D60(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); - MenuDrawTextWindow(0, 16, 29, 19); - MenuPrint(gOtherText_WontEat, 1, 17); + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(gOtherText_WontEat, 1, 17); } static void sub_8136D8C(void) { - MenuZeroFillScreen(); + Menu_EraseScreen(); BasicInitMenuWindow(&gWindowConfig_81E7080); } static void Pokeblock_MenuWindowTextPrint(const u8 *message) { - MenuDrawTextWindow(0, 16, 29, 19); - MenuPrint(message, 1, 17); + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(message, 1, 17); } #ifdef NONMATCHING diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 2892d09f9..6d102715a 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -414,9 +414,9 @@ static void Task_SetClock2(u8 taskId) //Ask player "Is this the correct time?" static void Task_SetClock3(u8 taskId) { - MenuDrawTextWindow(2, 16, 27, 19); - MenuPrint(gOtherText_CorrectTimePrompt, 3, 17); - MenuDrawTextWindow(23, 8, 29, 13); + Menu_DrawStdWindowFrame(2, 16, 27, 19); + Menu_PrintText(gOtherText_CorrectTimePrompt, 3, 17); + Menu_DrawStdWindowFrame(23, 8, 29, 13); PrintMenuItems(24, 9, 2, gMenuYesNoItems); InitMenu(0, 24, 9, 2, 1, 5); gTasks[taskId].func = Task_SetClock4; @@ -435,8 +435,8 @@ static void Task_SetClock4(u8 taskId) case 1: //NO HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - MenuZeroFillWindowRect(2, 16, 27, 19); + Menu_EraseWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(2, 16, 27, 19); gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock } } diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index ef1d66349..83953186b 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -25,8 +25,8 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gTileBuffer[]; -extern const struct WindowConfig gWindowConfig_81E6CE4; -extern const struct WindowConfig gWindowConfig_81E7240; +extern const struct WindowTemplate gWindowConfig_81E6CE4; +extern const struct WindowTemplate gWindowConfig_81E7240; extern const u8 *const gContestEffectStrings[]; extern const u8 *const gMoveDescriptions[]; extern const u8 gTypeNames[][7]; @@ -270,11 +270,11 @@ void CB2_InitLearnMove(void) SetUpWindowConfig(&gWindowConfig_81E7240); InitMenuWindow(&gWindowConfig_81E7240); - MenuZeroFillScreen(); + Menu_EraseScreen(); SetUpWindowConfig(&gWindowConfig_81E6CE4); InitMenuWindow(&gWindowConfig_81E6CE4); - MenuZeroFillScreen(); + Menu_EraseScreen(); REG_BG0VOFS = 0; REG_BG0VOFS = 0; // huh? @@ -304,11 +304,11 @@ void sub_81327A4(void) SetUpWindowConfig(&gWindowConfig_81E7240); InitMenuWindow(&gWindowConfig_81E7240); - MenuZeroFillScreen(); + Menu_EraseScreen(); SetUpWindowConfig(&gWindowConfig_81E6CE4); InitMenuWindow(&gWindowConfig_81E6CE4); - MenuZeroFillScreen(); + Menu_EraseScreen(); REG_DISPCNT = 0x1340; REG_BG0VOFS = 0; @@ -401,7 +401,7 @@ void LearnMoveMain(void) sub_813362C(); break; case 8: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); sLearnMoveStruct->state++; @@ -436,7 +436,7 @@ void LearnMoveMain(void) } break; case 12: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); sLearnMoveStruct->state++; @@ -467,7 +467,7 @@ void LearnMoveMain(void) sLearnMoveStruct->state++; break; case 17: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); sLearnMoveStruct->state = 18; @@ -495,7 +495,7 @@ void LearnMoveMain(void) sLearnMoveStruct->state++; break; case 25: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { sLearnMoveStruct->state = 26; DisplayYesNoMenu(21, 7, 1); @@ -524,7 +524,7 @@ void LearnMoveMain(void) } break; case 27: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { if (sLearnMoveStruct->showContestInfo == FALSE) sLearnMoveStruct->state = 3; @@ -533,7 +533,7 @@ void LearnMoveMain(void) } break; case 19: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { sLearnMoveStruct->state = 20; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); @@ -547,7 +547,7 @@ void LearnMoveMain(void) } break; case 21: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) sLearnMoveStruct->state = 14; break; case 22: @@ -597,7 +597,7 @@ void LearnMoveMain(void) } break; case 30: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { #ifdef ENGLISH sub_81328E8(gOtherText_ForgotOrDidNotLearnMove); @@ -609,7 +609,7 @@ void LearnMoveMain(void) } break; case 31: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { PlayFanfare(BGM_FANFA1); sLearnMoveStruct->state = 32; @@ -636,7 +636,7 @@ void DrawLearnMoveMenuWindow(void) BasicInitMenuWindow(&gWindowConfig_81E7240); for (i = 0; i < 4; i++) { - MenuDrawTextWindow( + Menu_DrawStdWindowFrame( gUnknown_08402CF8[i][0], gUnknown_08402CF8[i][1], gUnknown_08402CF8[i][2], @@ -658,7 +658,7 @@ void sub_8133030(bool8 a) for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) { sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2); - MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); + Menu_PrintText(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); } if (!a) @@ -696,10 +696,10 @@ void sub_8133140(bool8 a) for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) { sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2); - MenuPrint(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); + Menu_PrintText(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); if (i != 0) { - MenuZeroFillWindowRect( + Menu_EraseWindowRect( gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5 + 2, gUnknown_08402D08[1][i].unk4 + 7, @@ -938,7 +938,7 @@ void sub_8133800(void) r6++; } *str = EOS; - MenuPrint(gTileBuffer, 11, 1); + Menu_PrintText(gTileBuffer, 11, 1); sub_813360C(0); } @@ -972,17 +972,17 @@ void PrintMoveInfo(u16 moveId, const u8 *b) sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); else sub_8072C14(str, gBattleMoves[moveId].power, 32, 2); - MenuPrint(str, b[0], b[1]); + Menu_PrintText(str, b[0], b[1]); break; case 4: if (gBattleMoves[moveId].accuracy == 0) sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); else sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2); - MenuPrint(str, b[0], b[1]); + Menu_PrintText(str, b[0], b[1]); break; case 6: - MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + Menu_EraseWindowRect(b[0], b[1], b[0], b[1] + 1); numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10; if (numHearts == 255) numHearts = 0; @@ -995,7 +995,7 @@ void PrintMoveInfo(u16 moveId, const u8 *b) } break; case 7: - MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + Menu_EraseWindowRect(b[0], b[1], b[0], b[1] + 1); numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10; if (numHearts == 255) numHearts = 0; @@ -1037,7 +1037,7 @@ void sub_8133AEC(bool8 contestInfo, int unused) { u8 r1 = var * 2 + 9; - MenuFillWindowRectWithBlankTile(11, r1, 28, 12); + Menu_BlankWindowRect(11, r1, 28, 12); } } } @@ -1045,22 +1045,22 @@ void sub_8133AEC(bool8 contestInfo, int unused) { if (contestInfo) { - MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); - MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); + Menu_EraseWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); + Menu_EraseWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); for (i = 0; i < 16; i++) gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; } else { - MenuZeroFillWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); - MenuZeroFillWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); + Menu_EraseWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); + Menu_EraseWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); } - MenuZeroFillWindowRect(11, 9, 28, 12); + Menu_EraseWindowRect(11, 9, 28, 12); } } void sub_8133CA4(void) { - MenuZeroFillWindowRect(21, 7, 27, 12); + Menu_EraseWindowRect(21, 7, 27, 12); sub_8133AEC(sLearnMoveStruct->showContestInfo, 0); } diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 2ab05ca2b..c49c6d350 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -369,7 +369,7 @@ static u8 sub_80F8A28(void) RETURN_UP_STATE; case 9: - MenuZeroFillScreen(); + Menu_EraseScreen(); RETURN_UP_STATE; case 10: CpuFill16(1, (void *)(VRAM + 0x4800), 0x800); @@ -528,11 +528,11 @@ static void sub_80F8E80(void) x = ewram0_4.var10C->var4[pos].unk_0_4; y += ewram0_4.var10C->var4[pos].unk_0_0; - MenuPrint(ewram0_4.words[pos], ewram0_4.var10C->var3_4 + x, ewram0_4.var10C->var3_0 + y); + Menu_PrintText(ewram0_4.words[pos], ewram0_4.var10C->var3_4 + x, ewram0_4.var10C->var3_0 + y); y += 2; } - MenuPrint(ewram0_4.varD8, ewram0_4.varF9, ewram0_4.var10C->var1); + Menu_PrintText(ewram0_4.varD8, ewram0_4.varF9, ewram0_4.var10C->var1); } static void sub_80F8F18(void) diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c index b4144ea34..eeefa8431 100644 --- a/src/pokemon/mon_markings.c +++ b/src/pokemon/mon_markings.c @@ -312,7 +312,7 @@ void sub_80F727C(struct PokemonMarkMenu *ptr) void sub_80F728C(void) { - const struct FrameGraphics *frame = GetTextWindowFrameGraphics(gSaveBlock2.optionsWindowFrameType); + const struct FrameGraphics *frame = TextWindow_GetFrameGraphics(gSaveBlock2.optionsWindowFrameType); sMenu->frameTiles = frame->tiles; sMenu->framePalette = frame->palette; sMenu->tileLoadState = 0; diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 8e3adda12..028ae71a0 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -559,7 +559,7 @@ static bool8 TransitionToPokeblockFeedScene(void) gMain.state++; break; case 10: - MenuDrawTextWindow(0, 14, 29, 19); + Menu_DrawStdWindowFrame(0, 14, 29, 19); gMain.state++; break; case 11: @@ -715,7 +715,7 @@ static void LaunchPokeblockFeedTask(u8 a0) static void Task_WaitForAtePokeblockText(u8 taskID) { - if (MenuUpdateWindowText() == 1) + if (Menu_UpdateWindowText() == 1) gTasks[taskID].func = Task_PaletteFadeToReturn; } diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 1c1c71454..83820f4cc 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -2241,7 +2241,7 @@ static void sub_808DEB0(u16 a, u8 b, u8 c, u16 d) text[3] = EOS; *(u16 *)(VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0]; *(u16 *)(VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1]; - MenuPrint(text, b - 15, c); + Menu_PrintText(text, b - 15, c); } static void sub_808DF88(u16 a, u8 b, u8 c, u16 d) @@ -2961,20 +2961,20 @@ static void Task_InitPageScreenMultistep(u8 taskId) else sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3); sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3); - MenuPrint(gDexText_UnknownPoke, CATEGORY_LEFT, 5); - MenuPrint(gDexText_UnknownHeight, 16, 7); - MenuPrint(gDexText_UnknownWeight, 16, 9); + Menu_PrintText(gDexText_UnknownPoke, CATEGORY_LEFT, 5); + Menu_PrintText(gDexText_UnknownHeight, 16, 7); + Menu_PrintText(gDexText_UnknownWeight, 16, 9); if (gUnknown_0202FFBC->owned) { sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, CATEGORY_LEFT, 5); sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7); sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9); - MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); + Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); sub_80917CC(14, 0x3FC); } else { - MenuPrint(gUnknown_083A05F8, 2, 13); + Menu_PrintText(gUnknown_083A05F8, 2, 13); LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); } gMain.state++; @@ -3211,7 +3211,7 @@ static void Task_InitCryScreenMultistep(u8 taskId) gMain.state++; break; case 4: - MenuPrint(gDexText_CryOf, 10, 4); + Menu_PrintText(gDexText_CryOf, 10, 4); sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2); gMain.state++; break; @@ -3853,13 +3853,13 @@ static void sub_8090750(u8 taskId) else sub_8091154(dexNum, 13, 3); sub_80911C8(dexNum, 16, 3); - MenuPrint(gDexText_UnknownPoke, CATEGORY_LEFT, 5); - MenuPrint(gDexText_UnknownHeight, 16, 7); - MenuPrint(gDexText_UnknownWeight, 16, 9); + Menu_PrintText(gDexText_UnknownPoke, CATEGORY_LEFT, 5); + Menu_PrintText(gDexText_UnknownHeight, 16, 7); + Menu_PrintText(gDexText_UnknownWeight, 16, 9); sub_8091304(gPokedexEntries[dexNum].categoryName, CATEGORY_LEFT, 5); sub_8091458(gPokedexEntries[dexNum].height, 16, 7); sub_8091564(gPokedexEntries[dexNum].weight, 16, 9); - MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13); + Menu_PrintText(gPokedexEntries[dexNum].descriptionPage1, 2, 13); sub_80917CC(14, 0x3FC); gTasks[taskId].data[0]++; break; @@ -3906,8 +3906,8 @@ static void sub_8090A3C(u8 taskId) { u16 r4 = gTasks[taskId].data[1]; - MenuZeroFillWindowRect(2, 13, 27, 19); - MenuPrint(gPokedexEntries[r4].descriptionPage2, 2, 13); + Menu_EraseWindowRect(2, 13, 27, 19); + Menu_PrintText(gPokedexEntries[r4].descriptionPage2, 2, 13); (*(u16 *)(VRAM + 0x7ACA))++; (*(u16 *)(VRAM + 0x7B0A))++; gTasks[taskId].data[4] = 1; @@ -3970,8 +3970,8 @@ static void sub_8090C68(void) { if (gPokedexView->descriptionPageNum == 0) { - MenuZeroFillWindowRect(2, 13, 27, 19); - MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13); + Menu_EraseWindowRect(2, 13, 27, 19); + Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13); gPokedexView->descriptionPageNum = 1; (*(u16 *)(VRAM + 0x7ACA))++; (*(u16 *)(VRAM + 0x7B0A))++; @@ -3979,8 +3979,8 @@ static void sub_8090C68(void) } else { - MenuZeroFillWindowRect(2, 13, 27, 19); - MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); + Menu_EraseWindowRect(2, 13, 27, 19); + Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); gPokedexView->descriptionPageNum = 0; (*(u16 *)(VRAM + 0x7ACA))--; (*(u16 *)(VRAM + 0x7B0A))--; @@ -4190,7 +4190,7 @@ static void sub_8091154(u16 order, u8 b, u8 c) str[1] = CHAR_0 + (order % 100) / 10; str[2] = CHAR_0 + (order % 100) % 10; str[3] = EOS; - MenuPrint(str, b, c); + Menu_PrintText(str, b, c); } static u8 sub_80911C8(u16 num, u8 b, u8 c) @@ -4212,7 +4212,7 @@ static u8 sub_80911C8(u16 num, u8 b, u8 c) str[i] = 0xAE; break; } - MenuPrint(str, b, c); + Menu_PrintText(str, b, c); return i; } @@ -4237,7 +4237,7 @@ static u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) break; } end[i] = EOS; - MenuPrint(str, b, c); + Menu_PrintText(str, b, c); return i; } @@ -4297,7 +4297,7 @@ void unref_sub_80913A4(u16 a, u8 left, u8 top) str[3] = CHAR_PERIOD; str[4] = CHAR_0 + ((a % 1000) % 100) % 10; str[5] = EOS; - MenuPrint(str, left, top); + Menu_PrintText(str, left, top); } #elif GERMAN void unref_sub_80913A4(u16 arg0, u8 left, u8 top) { @@ -4341,7 +4341,7 @@ void unref_sub_80913A4(u16 arg0, u8 left, u8 top) { buffer[r6++] = EOS; buffer[2] = offset; - MenuPrint(buffer, left, top); + Menu_PrintText(buffer, left, top); } #endif @@ -4378,7 +4378,7 @@ static void sub_8091458(u16 height, u8 left, u8 top) buffer[i++] = (inches % 10) + CHAR_0; buffer[i++] = CHAR_DOUBLE_PRIME; buffer[i++] = EOS; - MenuPrint(buffer, left, top); + Menu_PrintText(buffer, left, top); } #else static void sub_8091458(u16 height, u8 left, u8 top) @@ -4448,7 +4448,7 @@ static void sub_8091564(u16 weight, u8 left, u8 top) buffer[i++] = CHAR_s; buffer[i++] = CHAR_PERIOD; buffer[i++] = EOS; - MenuPrint(buffer, left, top); + Menu_PrintText(buffer, left, top); } #else static void sub_8091564(u16 arg0, u8 left, u8 top) @@ -5036,7 +5036,7 @@ static void sub_8092644(u8 taskId) { sub_814ADC8(); PlaySE(SE_PIN); - MenuZeroFillWindowRect(18, 1, 28, 12); + Menu_EraseWindowRect(18, 1, 28, 12); sub_8092C8C(1); gTasks[taskId].func = sub_809217C; return; @@ -5045,7 +5045,7 @@ static void sub_8092644(u8 taskId) { sub_814ADC8(); PlaySE(SE_BOWA); - MenuZeroFillWindowRect(18, 1, 28, 12); + Menu_EraseWindowRect(18, 1, 28, 12); sub_8092C8C(1); *p1 = gTasks[taskId].data[14]; *p2 = gTasks[taskId].data[15]; @@ -5374,13 +5374,13 @@ static void sub_8092D78(u8 taskId) u16 i; u16 j; - MenuZeroFillWindowRect(18, 1, 28, 12); + Menu_EraseWindowRect(18, 1, 28, 12); for (i = 0, j = *r7; i < 6 && r6[j].text2 != NULL; i++, j++) { #ifndef NONMATCHING j += 0; // Useless statement needed to match #endif - MenuPrint(r6[j].text2, 18, i * 2 + 1); + Menu_PrintText(r6[j].text2, 18, i * 2 + 1); } sub_8091E20(r6[*r8 + *r7].text1); } diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 6c3c6c2b8..da9a18148 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -229,7 +229,7 @@ static void sub_8089A8C(void) static void sub_8089BDC(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order, u8 arg6) { PrintPartyMenuPromptText(5, arg6); - MenuDrawTextWindow(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1); + Menu_DrawStdWindowFrame(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1); PrintMenuItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order); } @@ -279,13 +279,13 @@ static void sub_8089D94(u8 taskID) if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) { PlaySE(SE_SELECT); - sPokeMenuCursorPos = MoveMenuCursor(-1); + sPokeMenuCursorPos = Menu_MoveCursor(-1); sub_808B5B4(taskID); } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) { PlaySE(SE_SELECT); - sPokeMenuCursorPos = MoveMenuCursor(1); + sPokeMenuCursorPos = Menu_MoveCursor(1); sub_808B5B4(taskID); } else if (gMain.newKeys & A_BUTTON) @@ -363,7 +363,7 @@ static void PokemonMenu_Summary(u8 taskID) void DoPokemonMenu_Switch(u8 taskID) { SetTaskFuncWithFollowupFunc(taskID, SetupDefaultPartyMenuSwitchPokemon, HandleDefaultPartyMenu); - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); } static void PokemonMenu_Switch(u8 taskID) @@ -378,12 +378,12 @@ static void sub_808A060(u8 taskID) { if (gMain.newKeys == DPAD_UP && sPokeMenuCursorPos != 0) { - sPokeMenuCursorPos = MoveMenuCursor(-1); + sPokeMenuCursorPos = Menu_MoveCursor(-1); PlaySE(SE_SELECT); } if (gMain.newKeys == DPAD_DOWN && sPokeMenuCursorPos != 2) { - sPokeMenuCursorPos = MoveMenuCursor(1); + sPokeMenuCursorPos = Menu_MoveCursor(1); PlaySE(SE_SELECT); } if (gMain.newKeys & A_BUTTON) @@ -409,7 +409,7 @@ static void PokemonMenu_Item(u8 taskID) { HandleDestroyMenuCursors(); sPokeMenuCursorPos = 0; - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); gTasks[taskID].func = sub_808A100; } @@ -442,7 +442,7 @@ static void sub_808A228(u8 taskID) } else { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); PrintPartyMenuPromptText(0, 0); gTasks[taskID].func = HandleDefaultPartyMenu; } @@ -601,7 +601,7 @@ static void sub_808A678(u8 taskID) static void PokemonMenu_TakeItem(u8 taskID) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678); } @@ -609,7 +609,7 @@ static void PokemonMenu_TakeItem(u8 taskID) static void PokemonMenu_TakeMail(u8 taskID) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); DoTakeMail(taskID, sub_808A678); } @@ -618,7 +618,7 @@ static void PokemonMenu_Mail(u8 taskID) { HandleDestroyMenuCursors(); sPokeMenuCursorPos = 0; - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); ShowPartyPopupMenu(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, 0); gTasks[taskID].func = sub_808A73C; } @@ -629,17 +629,17 @@ static void sub_808A73C(u8 taskID) { PlaySE(SE_SELECT); if (sPokeMenuCursorPos == 0) - sPokeMenuCursorPos = MoveMenuCursor(sUnknown_0839F584.numChoices - 1); + sPokeMenuCursorPos = Menu_MoveCursor(sUnknown_0839F584.numChoices - 1); else - sPokeMenuCursorPos = MoveMenuCursor(-1); + sPokeMenuCursorPos = Menu_MoveCursor(-1); } if (gMain.newAndRepeatedKeys == DPAD_DOWN) { PlaySE(SE_SELECT); if (sPokeMenuCursorPos == sUnknown_0839F584.numChoices - 1) - sPokeMenuCursorPos = MoveMenuCursor(1 - sUnknown_0839F584.numChoices); + sPokeMenuCursorPos = Menu_MoveCursor(1 - sUnknown_0839F584.numChoices); else - sPokeMenuCursorPos = MoveMenuCursor(1); + sPokeMenuCursorPos = Menu_MoveCursor(1); } if (gMain.newKeys & A_BUTTON) { @@ -679,7 +679,7 @@ static void sub_808A8A8(void) static void sub_808A8D4(u8 taskID) { sPokeMenuCursorPos = 0; - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); PrintPartyMenuPromptText(0, 0); gTasks[taskID].func = HandleDefaultPartyMenu; } @@ -695,7 +695,7 @@ static void PokemonMenu_CancelSubmenu(u8 taskID) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); sub_8089C7C(sPokeMenuCursorPos); gTasks[taskID].func = sub_8089D94; @@ -715,7 +715,7 @@ static void PokemonMenu_FieldMove(u8 taskID) tFieldMoveId = sPokeMenuOptionsOrder[sPokeMenuCursorPos] - POKEMENU_FIRST_FIELD_MOVE_ID; if (sub_80F9344() == TRUE) { - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); if (IS_SOFTBOILED_MILKDRINK(tFieldMoveId)) PrintPartyMenuPromptText(9, 0); else @@ -725,7 +725,7 @@ static void PokemonMenu_FieldMove(u8 taskID) else if (tFieldMoveId <= 7 && FlagGet(FLAG_BADGE01_GET + tFieldMoveId) != TRUE) { // can't use a field HM move without a proper badge - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); sub_806E834(gOtherText_CantBeUsedBadge, 1); gTasks[taskID].func = sub_808AAF0; @@ -745,7 +745,7 @@ static void PokemonMenu_FieldMove(u8 taskID) } else { - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); if (IS_SURF(tFieldMoveId) && TestPlayerAvatarFlags(8)) PrintPartyMenuPromptText(8, 0); else @@ -759,7 +759,7 @@ static void sub_808AAF0(u8 taskID) { if (gUnknown_0202E8F6 != 1 && (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); PokemonMenu_Cancel(taskID); } } @@ -798,7 +798,7 @@ static void sub_808ABF4(u8 taskID) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { - MenuZeroFillWindowRect(1, 17, 28, 18); + Menu_EraseWindowRect(1, 17, 28, 18); PokemonMenu_Cancel(taskID); } } diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 4a68b846a..001cebe45 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -16,7 +16,7 @@ EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; void sub_8098898(u8 index) { u8 *ptr; - MenuDrawTextWindow(10, 16, 29, 19); + Menu_DrawStdWindowFrame(10, 16, 29, 19); switch (gUnknown_083B6DF4[index].format) { @@ -89,5 +89,5 @@ void sub_8098898(u8 index) { } ptr[0] = EOS; - MenuPrint(gUnk2002694, 11, 17); + Menu_PrintText(gUnk2002694, 11, 17); } diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 9563bc08f..0887c6648 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -1037,7 +1037,7 @@ static void sub_809E260(u8 taskId) { if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) { - MenuZeroFillWindowRect(0, 14, 9, 18); + Menu_EraseWindowRect(0, 14, 9, 18); } SummaryScreenHandleLeftRightInput(taskId, -1); @@ -1048,7 +1048,7 @@ static void sub_809E260(u8 taskId) { if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) { - MenuZeroFillWindowRect(0, 14, 9, 18); + Menu_EraseWindowRect(0, 14, 9, 18); } SummaryScreenHandleLeftRightInput(taskId, 1); @@ -1482,8 +1482,8 @@ static void sub_809EAC8(u8 taskId) sub_80A1B1C(9); sub_80A16CC(1); - MenuZeroFillWindowRect(15, 12, 28, 13); - MenuZeroFillWindowRect(11, 15, 28, 18); + Menu_EraseWindowRect(15, 12, 28, 13); + Menu_EraseWindowRect(11, 15, 28, 18); pssData.headerActionTextId = 6; PrintSummaryWindowHeaderText(); @@ -2371,7 +2371,7 @@ void sub_809F814(u8 taskId) { if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) { - MenuZeroFillWindowRect(0, 14, 9, 18); + Menu_EraseWindowRect(0, 14, 9, 18); } gTasks[taskId].func = sub_809E260; @@ -2387,7 +2387,7 @@ void sub_809F814(u8 taskId) { if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) { - MenuZeroFillWindowRect(0, 14, 9, 18); + Menu_EraseWindowRect(0, 14, 9, 18); } gTasks[taskId].func = sub_809E260; @@ -2414,8 +2414,8 @@ static void sub_809F9D0(u8 taskId, u8 b) sub_80A1488(-2, 4); sub_80A1654(-2, 4); - MenuZeroFillWindowRect(11, 15, 28, 18); - MenuPrint(gOtherText_CantForgetHMs, 11, 15); + Menu_EraseWindowRect(11, 15, 28, 18); + Menu_PrintText(gOtherText_CantForgetHMs, 11, 15); gTasks[taskId].func = sub_809F814; } @@ -2494,9 +2494,9 @@ static void sub_809FAC8(struct Pokemon *mon) if (GetMonData(mon, MON_DATA_IS_EGG)) { - MenuZeroFillWindowRect(1, 2, 4, 3); - MenuZeroFillWindowRect(3, 16, 9, 17); - MenuZeroFillWindowRect(0, 12, 11, 15); + Menu_EraseWindowRect(1, 2, 4, 3); + Menu_EraseWindowRect(3, 16, 9, 17); + Menu_EraseWindowRect(0, 12, 11, 15); GetMonNickname(mon, gStringVar1); sub_80A1FF8(gStringVar1, 13, 3, 16); LoadPalette(sUnknown_083C157C, 4, 2); @@ -2520,7 +2520,7 @@ static void sub_809FAC8(struct Pokemon *mon) } else { - MenuZeroFillWindowRect(1, 2, 4, 3); + Menu_EraseWindowRect(1, 2, 4, 3); } buffer = gStringVar1; @@ -2530,7 +2530,7 @@ static void sub_809FAC8(struct Pokemon *mon) buffer[1] = 0x13; buffer[2] = 0x3C; buffer[3] = EOS; - MenuPrint(gStringVar1, 1, 12); + Menu_PrintText(gStringVar1, 1, 12); sub_80A0958(mon); } @@ -2545,12 +2545,12 @@ static void sub_809FBE4(void) sub_80A1918(i, 1); } - MenuZeroFillWindowRect(11, 4, 29, 18); + Menu_EraseWindowRect(11, 4, 29, 18); } static void sub_809FC0C(void) { - MenuPrint(gOtherText_Type2, 11, 6); + Menu_PrintText(gOtherText_Type2, 11, 6); GetStringCenterAlignXOffset(0, 22, 4); GetStringCenterAlignXOffset(2, 23, 4); } @@ -2569,7 +2569,7 @@ static void sub_809FC34(struct Pokemon *mon) sub_80A1918(i, 1); } - MenuZeroFillWindowRect(11, 9, 28, 12); + Menu_EraseWindowRect(11, 9, 28, 12); if (GetMonData(mon, MON_DATA_IS_EGG)) { buffer = gStringVar1; @@ -2580,7 +2580,7 @@ static void sub_809FC34(struct Pokemon *mon) buffer[1] = 0x13; buffer[2] = 0x4E; buffer[3] = EOS; - MenuPrint(gStringVar1, 11, 4); + Menu_PrintText(gStringVar1, 11, 4); sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1); sub_80A198C(9, 120, 48, 0); @@ -2588,19 +2588,19 @@ static void sub_809FC34(struct Pokemon *mon) friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); if (friendship < 6) { - MenuPrint(gOtherText_EggAbout, 11, 9); + Menu_PrintText(gOtherText_EggAbout, 11, 9); } else if (friendship < 11) { - MenuPrint(gOtherText_EggSoon, 11, 9); + Menu_PrintText(gOtherText_EggSoon, 11, 9); } else if (friendship < 41) { - MenuPrint(gOtherText_EggSomeTime, 11, 9); + Menu_PrintText(gOtherText_EggSomeTime, 11, 9); } else { - MenuPrint(gOtherText_EggLongTime, 11, 9); + Menu_PrintText(gOtherText_EggLongTime, 11, 9); } PokemonSummaryScreen_PrintEggTrainerMemo(mon, 11, 14); @@ -2629,7 +2629,7 @@ static void sub_809FC34(struct Pokemon *mon) buffer[1] = 0x13; buffer[2] = 0x4E; buffer[3] = EOS; - MenuPrint(gStringVar1, 11, 4); + Menu_PrintText(gStringVar1, 11, 4); sub_80A1F98(GetMonData(mon, MON_DATA_OT_ID) & 0xFFFF, 13, 5, 2, 193, 32, 1); @@ -2642,7 +2642,7 @@ static void sub_809FC34(struct Pokemon *mon) ability = GetAbilityBySpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_ALT_ABILITY)); sub_80A1FF8(gAbilityNames[ability], 13, 11, 9); - MenuPrint(gAbilityDescriptions[ability], 11, 11); + Menu_PrintText(gAbilityDescriptions[ability], 11, 11); PokemonSummaryScreen_PrintTrainerMemo(mon, 11, 14); } @@ -2656,17 +2656,17 @@ static void sub_809FE6C(struct Pokemon *mon) static void sub_809FE80(void) { - MenuZeroFillWindowRect(14, 4, 18, 5); - MenuZeroFillWindowRect(25, 4, 30, 5); - MenuZeroFillWindowRect(11, 9, 28, 12); - MenuZeroFillWindowRect(11, 14, 28, 17); + Menu_EraseWindowRect(14, 4, 18, 5); + Menu_EraseWindowRect(25, 4, 30, 5); + Menu_EraseWindowRect(11, 9, 28, 12); + Menu_EraseWindowRect(11, 14, 28, 17); } static void sub_809FEB8(void) { sub_80A1FF8(gOtherText_ExpPoints, 13, 11, 14); sub_80A1FF8(gOtherText_NextLv, 13, 11, 16); - MenuPrint(gOtherText_Terminator18, 21, 16); + Menu_PrintText(gOtherText_Terminator18, 21, 16); sub_80A1F48(gOtherText_HP, 13, 11, 7, 42); sub_80A1F48(gOtherText_Attack, 13, 11, 9, 42); @@ -2727,12 +2727,12 @@ static void sub_80A0090(struct Pokemon *mon) static void sub_80A00A4(void) { - MenuZeroFillWindowRect(11, 4, 19, 5); - MenuZeroFillWindowRect(16, 7, 21, 8); - MenuZeroFillWindowRect(17, 9, 21, 12); - MenuZeroFillWindowRect(27, 7, 29, 12); - MenuZeroFillWindowRect(22, 14, 28, 15); - MenuZeroFillWindowRect(23, 16, 28, 17); + Menu_EraseWindowRect(11, 4, 19, 5); + Menu_EraseWindowRect(16, 7, 21, 8); + Menu_EraseWindowRect(17, 9, 21, 12); + Menu_EraseWindowRect(27, 7, 29, 12); + Menu_EraseWindowRect(22, 14, 28, 15); + Menu_EraseWindowRect(23, 16, 28, 17); } static void sub_80A00F4(u8 a) @@ -2770,7 +2770,7 @@ static void sub_80A015C(struct Pokemon *mon) { sub_80A1918(i, 1); sub_80A1FF8(gOtherText_OneDash, 13, 15, (2 * i) + 4); - MenuPrint(gOtherText_TwoDashes, 26, (2 * i) + 4); + Menu_PrintText(gOtherText_TwoDashes, 26, (2 * i) + 4); } else { @@ -2793,7 +2793,7 @@ static void sub_80A015C(struct Pokemon *mon) buffer = sub_8072C14(buffer, curPP, 14, 1); *buffer++ = CHAR_SLASH; sub_8072C14(buffer, maxPP, 32, 1); - MenuPrint(gStringVar1, 25, (2 * i) + 4); + Menu_PrintText(gStringVar1, 25, (2 * i) + 4); } } } @@ -2829,7 +2829,7 @@ static void sub_80A029C(struct Pokemon *mon) buffer = sub_8072C14(buffer, pp, 14, 1); *buffer++ = CHAR_SLASH; buffer = sub_8072C14(buffer, pp, 32, 1); - MenuPrint(gStringVar1, 25, 12); + Menu_PrintText(gStringVar1, 25, 12); } static void sub_80A0390(void) @@ -2838,7 +2838,7 @@ static void sub_80A0390(void) for (i = 0; i < MAX_MON_MOVES; i++) { - MenuZeroFillWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5); + Menu_EraseWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5); } } @@ -2883,7 +2883,7 @@ void sub_80A03F0(struct Pokemon *mon, u8 *selectedMoveIndex) static void sub_80A0428(struct Pokemon *mon, u8 *selectedMoveIndex) { u16 move = sub_80A03BC(mon, *selectedMoveIndex); - MenuZeroFillWindowRect(11, 15, 28, 18); + Menu_EraseWindowRect(11, 15, 28, 18); if (pssData.page == PSS_PAGE_BATTLE_MOVES) { @@ -2901,14 +2901,14 @@ static void sub_80A046C(u16 move) { if (move == 0xFFFF) return; - MenuPrint(gMoveDescriptions[move - 1], 11, 15); + Menu_PrintText(gMoveDescriptions[move - 1], 11, 15); } static void sub_80A0498(u16 move) { if (move == 0xFFFF) return; - MenuPrint(gContestEffectStrings[gContestMoves[move].effect], 11, 15); + Menu_PrintText(gContestEffectStrings[gContestMoves[move].effect], 11, 15); } static void sub_80A04CC(u16 move) @@ -2921,26 +2921,26 @@ static void sub_80A04CC(u16 move) { buffer = gStringVar1; buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); - MenuPrint(gStringVar1, 7, 15); + Menu_PrintText(gStringVar1, 7, 15); } else { buffer = gStringVar1; buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1); - MenuPrint(gStringVar1, 7, 15); + Menu_PrintText(gStringVar1, 7, 15); } if (gBattleMoves[move].accuracy == 0) { buffer = gStringVar1; buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); - MenuPrint(gStringVar1, 7, 17); + Menu_PrintText(gStringVar1, 7, 17); } else { buffer = gStringVar1; buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1); - MenuPrint(gStringVar1, 7, 17); + Menu_PrintText(gStringVar1, 7, 17); } } @@ -3153,7 +3153,7 @@ static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 lef if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD)) { - MenuPrint(gOtherText_EggObtainedInTrade, left, top); + Menu_PrintText(gOtherText_EggObtainedInTrade, left, top); return; } @@ -3162,13 +3162,13 @@ static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 lef if (locationMet == 255) { // Eggs received from Pokemon Box. - MenuPrint(gOtherText_EggNicePlace, left, top); + Menu_PrintText(gOtherText_EggNicePlace, left, top); return; } if (!PokemonSummaryScreen_CheckOT(mon)) { - MenuPrint(gOtherText_EggObtainedInTrade, left, top); + Menu_PrintText(gOtherText_EggObtainedInTrade, left, top); return; } @@ -3176,11 +3176,11 @@ static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 lef if (locationMet == 253) { - MenuPrint(gOtherText_EggHotSprings, left, top); + Menu_PrintText(gOtherText_EggHotSprings, left, top); return; } - MenuPrint(gOtherText_EggDayCare, left, top); + Menu_PrintText(gOtherText_EggDayCare, left, top); } static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left, u8 top) @@ -3285,7 +3285,7 @@ static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left, } } - MenuPrint(gStringVar4, left++, top++); + Menu_PrintText(gStringVar4, left++, top++); } static void sub_80A0958(struct Pokemon *mon) @@ -3310,8 +3310,8 @@ static void sub_80A0958(struct Pokemon *mon) buffer[2] = 0x50; buffer[3] = EOS; - MenuPrint(gStringVar1, 0, 14); - MenuZeroFillWindowRect(3, 16, 9, 17); + Menu_PrintText(gStringVar1, 0, 14); + Menu_EraseWindowRect(3, 16, 9, 17); level = GetMonData(mon, MON_DATA_LEVEL); @@ -3325,7 +3325,7 @@ static void sub_80A0958(struct Pokemon *mon) buffer[2] = 0x20; buffer[3] = EOS; - MenuPrint(gStringVar1, 3, 16); + Menu_PrintText(gStringVar1, 3, 16); sub_80A0A2C(mon, 7, 16); } @@ -3343,7 +3343,7 @@ static void sub_80A0A2C(struct Pokemon *mon, u8 left, u8 top) { default: bottom = top + 1; - MenuZeroFillWindowRect(left, top, left, bottom); + Menu_EraseWindowRect(left, top, left, bottom); return; case MON_MALE: genderSymbol = gOtherText_MaleSymbol2; @@ -3406,7 +3406,7 @@ static void PrintNumRibbons(struct Pokemon *mon) ConvertIntToDecimalStringN(&text[3], numRibbons, 1, 2); } - MenuPrint(sUnknown_083C15AE, 21, 4); + Menu_PrintText(sUnknown_083C15AE, 21, 4); } static void PrintHeldItemName(u16 itemId, u8 left, u8 top) @@ -3427,7 +3427,7 @@ static void PrintHeldItemName(u16 itemId, u8 left, u8 top) CopyItemName(itemId, gStringVar1); } - MenuPrint(sUnknown_083C15B4, left, top); + Menu_PrintText(sUnknown_083C15B4, left, top); } static void DrawExperienceProgressBar(struct Pokemon *mon, u8 left, u8 top) @@ -3518,7 +3518,7 @@ static void PrintSummaryWindowHeaderText(void) buffer[2] = 0x58; buffer[3] = EOS; - MenuPrint(gStringVar1, 0, 0); + Menu_PrintText(gStringVar1, 0, 0); if (pssData.headerActionTextId != 0) { @@ -3527,7 +3527,7 @@ static void PrintSummaryWindowHeaderText(void) } else { - MenuZeroFillWindowRect(23, 0, 24, 1); + Menu_EraseWindowRect(23, 0, 24, 1); } buffer = gStringVar1; @@ -3539,7 +3539,7 @@ static void PrintSummaryWindowHeaderText(void) buffer[2] = 0x28; buffer[3] = EOS; - MenuPrint(gStringVar1, 25, 0); + Menu_PrintText(gStringVar1, 25, 0); } // If the given pokemon previously had the pokerus virus, a small @@ -4138,7 +4138,7 @@ static void sub_80A12D0(s8 a) { u8 newTaskId; - MenuZeroFillWindowRect(1, 18, 5, 19); + Menu_EraseWindowRect(1, 18, 5, 19); sub_80A18E4(29); newTaskId = CreateTask(sub_80A1048, 0); @@ -4194,14 +4194,14 @@ static void sub_80A12D0(s8 a) // } // else // { -// MenuZeroFillWindowRect(0, 19, 9, 19); +// Menu_EraseWindowRect(0, 19, 9, 19); // } // if (gTasks[taskId].data[0] == 0 || gTasks[taskId].data[1] < 0) // { // if (pssData.page == PSS_PAGE_BATTLE_MOVES) // { -// MenuZeroFillWindowRect(0, 14, 9, 18); +// Menu_EraseWindowRect(0, 14, 9, 18); // sub_80A0958(pssData.loadedMon); // if (GetMonStatusAndPokerus(pssData.loadedMon)) @@ -4327,7 +4327,7 @@ _080A13F4:\n\ movs r1, 0x13\n\ movs r2, 0x9\n\ movs r3, 0x13\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ _080A1400:\n\ movs r1, 0\n\ ldrsh r0, [r7, r1]\n\ @@ -4346,7 +4346,7 @@ _080A1410:\n\ movs r1, 0xE\n\ movs r2, 0x9\n\ movs r3, 0x12\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ adds r4, 0x10\n\ adds r0, r4, 0\n\ bl sub_80A0958\n\ @@ -4404,7 +4404,7 @@ static void sub_80A1488(s8 a, u8 b) if (pssData.page == PSS_PAGE_BATTLE_MOVES) { - MenuZeroFillWindowRect(0, 14, 9, 19); + Menu_EraseWindowRect(0, 14, 9, 19); } taskId = FindTaskIdByFunc(sub_80A1334); @@ -4531,7 +4531,7 @@ _080A15C0:\n\ movs r1, 0x13\n\ movs r2, 0x9\n\ movs r3, 0x13\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ _080A15CC:\n\ movs r1, 0\n\ ldrsh r0, [r7, r1]\n\ @@ -4550,7 +4550,7 @@ _080A15DC:\n\ movs r1, 0xE\n\ movs r2, 0x9\n\ movs r3, 0x12\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ adds r4, 0x10\n\ adds r0, r4, 0\n\ bl sub_80A0958\n\ @@ -4606,7 +4606,7 @@ static void sub_80A1654(s8 a, u8 b) if (pssData.page == PSS_PAGE_CONTEST_MOVES) { - MenuZeroFillWindowRect(0, 14, 9, 19); + Menu_EraseWindowRect(0, 14, 9, 19); } taskId = FindTaskIdByFunc(sub_80A1500); @@ -5272,7 +5272,7 @@ u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8 id) { u8 arr[3]; - sub_8072CD4(&arr[0], &arr[1], &arr[2]); + Menu_GetTextColors(&arr[0], &arr[1], &arr[2]); dest = sub_80A1E58(dest, id); dest = StringCopy(dest, src); @@ -5313,7 +5313,7 @@ static void sub_80A1F98(s32 value, u8 id, u8 n, u8 mode, u8 left, u16 top, s32 e static void sub_80A1FF8(const u8 *text, u8 id, u8 left, u8 top) { sub_80A1E9C(gStringVar4, text, id); - MenuPrint(gStringVar4, left, top); + Menu_PrintText(gStringVar4, left, top); } u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 8a67390ad..411a20f79 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -3337,7 +3337,7 @@ void sub_80EF428(u8 a, u8 b) tileBuffer = gUnknown_083DFEC8; sub_8072C74(&tileBuffer[0x800], pcText, 0xC0, 2); - MenuPrint(&tileBuffer[0x800], 3, 17); + Menu_PrintText(&tileBuffer[0x800], 3, 17); } void sub_80EF490(u8 a) @@ -3670,7 +3670,7 @@ bool8 sub_80EF874(void) return TRUE; break; case 4: - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 5: sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE); @@ -3691,7 +3691,7 @@ bool8 sub_80EF874(void) return TRUE; break; case 10: - MenuDrawTextWindow(13, 3, 29, 17); + Menu_DrawStdWindowFrame(13, 3, 29, 17); sub_80EF9F8(); break; case 11: @@ -3765,8 +3765,8 @@ void sub_80EF9F8(void) b = gUnknown_083DFEC4->regionMap.everGrandeCityArea; if (gUnknown_083DFEC4->unkCDCC[mapSectionId][b] != NULL) { - MenuFillWindowRectWithBlankTile(14, top, 15, 15); - MenuFillWindowRectWithBlankTile(26, top, 28, 15); + Menu_BlankWindowRect(14, top, 15, 15); + Menu_BlankWindowRect(26, top, 28, 15); sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gUnknown_083DFEC4->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10); top += 11; } @@ -3779,7 +3779,7 @@ void sub_80EF9F8(void) // Epic fail by the compiler at optimizing this. if (!someBool && top < 16) - MenuFillWindowRectWithBlankTile(14, top, 28, 15); + Menu_BlankWindowRect(14, top, 28, 15); if (gUnknown_083DFEC4->regionMap.unk16 == 2) sub_80EFD74(); @@ -3982,7 +3982,7 @@ bool8 sub_80EFF68(void) return TRUE; break; case 4: - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 5: sub_80F1614(); @@ -4050,13 +4050,13 @@ void sub_80F01A4(void) void sub_80F01E0(u16 a) { - MenuPrint(gUnknown_083DFEC4->unk8829[a], 13, 1); + Menu_PrintText(gUnknown_083DFEC4->unk8829[a], 13, 1); if (gUnknown_083DFEC4->unk76AA == 1) { - MenuPrint(gUnknown_083DFEC4->unk88E9[a], 13, 3); + Menu_PrintText(gUnknown_083DFEC4->unk88E9[a], 13, 3); sub_80F443C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk2); - MenuPrint(gUnknown_083DFEC4->unk8788, 1, 6); + Menu_PrintText(gUnknown_083DFEC4->unk8788, 1, 6); } } @@ -4098,7 +4098,7 @@ bool8 sub_80F02A0(void) } break; case 4: - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 5: LZ77UnCompVram(gUnknown_08E9FC64, (void *)VRAM + 0xE800); @@ -4287,7 +4287,7 @@ _080F035C:\n\ _080F0366:\n\ b _080F0626\n\ _080F0368:\n\ - bl MenuZeroFillScreen\n\ + bl Menu_EraseScreen\n\ b _080F0618\n\ _080F036E:\n\ ldr r0, _080F0378 @ =gUnknown_08E9FC64\n\ diff --git a/src/rom_800D42C.c b/src/rom_800D42C.c index bf6d03fb7..9449ca0d1 100644 --- a/src/rom_800D42C.c +++ b/src/rom_800D42C.c @@ -28,8 +28,8 @@ extern u8 BattleText_Tie[]; #define PRINT_MESSAGE(text, tileDataStartOffset, x) \ { \ - InitWindow(&gUnknown_03004210, text, tileDataStartOffset, x, MESSAGE_Y); \ - sub_8002F44(&gUnknown_03004210); \ + Text_InitWindow(&gUnknown_03004210, text, tileDataStartOffset, x, MESSAGE_Y); \ + Text_PrintWindow8002F44(&gUnknown_03004210); \ } #define PRINT_MESSAGE_LEFT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, LEFT_MESSAGE_X) diff --git a/src/roulette.c b/src/roulette.c index 1d612d071..0253a6bb8 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -625,8 +625,8 @@ void sub_8115384(void) sub_81182F8(0x6); sub_811829C(0x0); sub_8117158(0x0); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4157[0], 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4157[0], 0x1, 0xF); gSpriteCoordOffsetX = -0x3C; gSpriteCoordOffsetY = 0x0; gMain.state++; @@ -693,14 +693,14 @@ void sub_8115734(u8 taskid) { DisplayYesNoMenu(0x14, 0x8, 0x1); sub_814AAF8(0x2D9E); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41E3, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41E3, 0x1, 0xF); DoYesNoFuncWithChoice(taskid, &gUnknown_083F8EBC); } void sub_811577C(u8 taskid) { - MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); + Menu_EraseWindowRect(0x14, 0x8, 0x1A, 0xD); gTasks[taskid].func = &sub_81159BC; } @@ -1446,21 +1446,21 @@ void sub_8116638(u8 taskid) if (gTasks[taskid].data[0x2] == 0xC) { PlayFanfare(BGM_ME_B_BIG); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41A5, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41A5, 0x1, 0xF); } else { PlayFanfare(BGM_ME_B_SMALL); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4199, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4199, 0x1, 0xF); } break; case 0: default: m4aSongNumStart(SE_HAZURE); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41AE, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41AE, 0x1, 0xF); } gTasks[taskid].data[0x1] = 0x0; gTasks[taskid].func = &sub_811659C; @@ -1500,8 +1500,8 @@ void sub_811677C(u8 taskid) { ConvertIntToDecimalStringN((u8 *)&gStringVar1, (eRoulette->var19 * gTasks[taskid].data[0x2]), STR_CONV_MODE_LEFT_ALIGN, 0x2); StringExpandPlaceholders((u8 *)&gStringVar4, &gUnknown_081C41BD); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint((u8 *)&gStringVar4, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText((u8 *)&gStringVar4, 0x1, 0xF); gTasks[taskid].data[0x1] = (eRoulette->var19 * gTasks[taskid].data[0x2]); gTasks[taskid].data[0x7] = 0x0; gTasks[taskid].func = &sub_81166E8; @@ -1534,14 +1534,14 @@ void sub_8116880(u8 taskid) { if (gTasks[taskid].data[0x6] == 0x6) { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41F1, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41F1, 0x1, 0xF); sub_8116C34(taskid, &dp01t_12_3_battle_menu, 0xFFFF, 0x3); } else if (gTasks[taskid].data[0xD] == 0x270F) { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4231, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4231, 0x1, 0xF); sub_8116C34(taskid, &sub_8115734, 0xFFFF, 0x3); } else @@ -1551,8 +1551,8 @@ void sub_8116880(u8 taskid) } else { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41D2, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41D2, 0x1, 0xF); sub_8116C34(taskid, &sub_81157AC, 0x3C, 0x3); } } @@ -1570,8 +1570,8 @@ void dp01t_12_3_battle_menu(u8 taskid) gSprites[eRoulette->var3C[i + 0x7]].invisible = FALSE; if (gTasks[taskid].data[0xD] == 0x270F) { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4231, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4231, 0x1, 0xF); sub_8116C34(taskid, &sub_8115734, 0xFFFF, 0x3); } else @@ -2619,8 +2619,8 @@ void sub_8117528(u8 taskid) void sub_811755C(u8 taskid) { - MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); - MenuZeroFillScreen(); + Menu_EraseWindowRect(0x14, 0x8, 0x1A, 0xD); + Menu_EraseScreen(); BeginNormalPaletteFade(-0x1, 0x0, 0x0, 0x10, 0x0); gPaletteFade.delayCounter = gPaletteFade.multipurpose2; UpdatePaletteFade(); @@ -2629,7 +2629,7 @@ void sub_811755C(u8 taskid) void sub_81175C0(u8 taskid) { - MenuZeroFillScreen(); + Menu_EraseScreen(); ScriptContext2_Disable(); DestroyTask(taskid); } @@ -2640,7 +2640,7 @@ void sub_81175DC(u8 taskid) if (!(gMain.newKeys & (A_BUTTON | B_BUTTON)) && gTasks[taskid].data[0] < 0x3D) return; gSpecialVar_0x8004 = 0x1; - MenuZeroFillScreen(); + Menu_EraseScreen(); ScriptContext2_Disable(); DestroyTask(taskid); } @@ -2650,8 +2650,8 @@ void sub_8117630(u8 taskid) u32 temp = gUnknown_083F8DF0[(gSpecialVar_0x8004 & 0x1) + (gSpecialVar_0x8004 >> 0x7 << 0x1)]; ConvertIntToDecimalStringN(gStringVar1, temp, 0x2, 0x1); StringExpandPlaceholders(gStringVar4, &gUnknown_081C40DF); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(gStringVar4, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(gStringVar4, 0x1, 0xF); gTasks[taskid].func = &sub_81174F8; } @@ -2660,7 +2660,7 @@ void Task_Roulette_0(u8 taskid) s32 temp; ConvertIntToDecimalStringN(gStringVar1, gTasks[taskid].data[0xD], 0x1, 0x4); StringExpandPlaceholders(gStringVar4, gOtherText_Coins); - MenuDrawTextWindow(0x0, 0x0, 0x9, 0x3); + Menu_DrawStdWindowFrame(0x0, 0x0, 0x9, 0x3); MenuPrint_RightAligned(gStringVar4, 0x9, 0x1); temp = gUnknown_083F8DF0[(gSpecialVar_0x8004 & 0x1) + (gSpecialVar_0x8004 >> 0x7 << 0x1)]; ConvertIntToDecimalStringN(gStringVar1, temp, 0x2, 0x1); @@ -2668,23 +2668,23 @@ void Task_Roulette_0(u8 taskid) { if ((gSpecialVar_0x8004 & 0x80) && (gSpecialVar_0x8004 & 0x1)) { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4139, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4139, 0x1, 0xF); sub_8116C34(taskid , &sub_8117630, 0xFFFF, 0x3); } else { StringExpandPlaceholders(gStringVar4, &gUnknown_081C40DF); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(gStringVar4, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(gStringVar4, 0x1, 0xF); gTasks[taskid].func = &sub_81174F8; } } else { StringExpandPlaceholders(gStringVar4, &gUnknown_081C411C); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(gStringVar4, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(gStringVar4, 0x1, 0xF); gTasks[taskid].func = &sub_81175DC; gTasks[taskid].data[0xD] = 0x0; gTasks[taskid].data[0x0] = 0x0; diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 53308e856..d1ab2d512 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -215,7 +215,7 @@ extern u8 byte_3002A68; extern const u8 gUnknown_08E6C100[]; extern const u8 gUnknown_08E6C920[]; extern const u8 gUnknown_08E6D354[]; -extern const struct WindowConfig gWindowConfig_81E6F68; +extern const struct WindowTemplate gWindowConfig_81E6F68; extern const u8 *const gPokeblockNames[]; extern const struct Berry gBerries[]; @@ -993,12 +993,12 @@ static void sub_804E56C(void) } break; case 4: - MenuDrawTextWindow(0, 14, 29, 19); + Menu_DrawStdWindowFrame(0, 14, 29, 19); MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15); gBerryBlenderData->field_0++; break; case 5: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gBerryBlenderData->field_0++; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); @@ -1184,8 +1184,8 @@ static void sub_804E9F8(void) } break; case 5: - MenuDrawTextWindow(0, 13, 29, 19); - MenuPrint(gOtherText_LinkStandby3, 1, 14); + Menu_DrawStdWindowFrame(0, 13, 29, 19); + Menu_PrintText(gOtherText_LinkStandby3, 1, 14); gBerryBlenderData->field_0 = 8; gBerryBlenderData->framesToWait = 0; break; @@ -1209,7 +1209,7 @@ static void sub_804E9F8(void) case 10: if (++gBerryBlenderData->framesToWait > 20) { - MenuZeroFillScreen(); + Menu_EraseScreen(); if (GetBlockReceivedStatus() == sub_8008198()) { for (i = 0; i < GetLinkPlayerCount(); i++) @@ -1309,12 +1309,12 @@ static void sub_804E9F8(void) PlayBGM(BGM_CYCLING); break; case 100: - MenuDrawTextWindow(0, 13, 29, 19); + Menu_DrawStdWindowFrame(0, 13, 29, 19); MenuPrintMessage(gOtherText_LinkNotFound, 1, 15); gBerryBlenderData->field_0++; break; case 101: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gBerryBlenderData->field_0++; break; case 102: @@ -2500,9 +2500,9 @@ static void sub_80508D4(u8 value) static void sub_80508FC(void) { gBerryBlenderData->field_AA = 0; - MenuDrawTextWindow(23, 8, 28, 13); + Menu_DrawStdWindowFrame(23, 8, 28, 13); sub_814A5C0(0, -1, 12, 0x2D9F, 32); - MenuPrint(gOtherText_YesNoTerminating, 24, 9); + Menu_PrintText(gOtherText_YesNoTerminating, 24, 9); sub_80508D4(gBerryBlenderData->field_AA); } @@ -2575,11 +2575,11 @@ static void sub_8050954(void) break; case 7: gBerryBlenderData->field_6F++; - MenuDrawTextWindow(0, 14, 29, 19); + Menu_DrawStdWindowFrame(0, 14, 29, 19); MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15); break; case 8: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gBerryBlenderData->field_6F++; break; case 9: @@ -2654,7 +2654,7 @@ static void sub_8050954(void) } break; case 13: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { SetMainCallback2(sub_8050E30); gBerryBlenderData->field_6F = 0; @@ -2746,7 +2746,7 @@ static void sub_8050E30(void) case 1: gBerryBlenderData->field_6F = 3; DestroyMenuCursor(); - MenuZeroFillWindowRect(23, 8, 28, 13); + Menu_EraseWindowRect(23, 8, 28, 13); #ifdef ENGLISH StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); StringAppend(gStringVar4, gOtherText_OtherCaseIsFull); @@ -2759,7 +2759,7 @@ static void sub_8050E30(void) case 2: gBerryBlenderData->field_6F++; DestroyMenuCursor(); - MenuZeroFillWindowRect(23, 8, 28, 13); + Menu_EraseWindowRect(23, 8, 28, 13); #ifdef ENGLISH StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); StringAppend(gStringVar4, gOtherText_NoBerriesForBlend); @@ -2770,7 +2770,7 @@ static void sub_8050E30(void) MenuPrintMessage(gStringVar4, 1, 15); break; case 3: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gBerryBlenderData->framesToWait = 0; gBerryBlenderData->field_6F++; @@ -2781,8 +2781,8 @@ static void sub_8050E30(void) gBerryBlenderData->field_6F = 5; break; case 5: - MenuDrawTextWindow(0, 14, 29, 19); - MenuPrint(gMultiText_Saving, 2, 15); + Menu_DrawStdWindowFrame(0, 14, 29, 19); + Menu_PrintText(gMultiText_Saving, 2, 15); sub_80084A4(); gBerryBlenderData->field_6F++; break; @@ -2859,17 +2859,17 @@ static void sub_80510E8(void) case 1: gBerryBlenderData->field_6F = 3; DestroyMenuCursor(); - MenuZeroFillWindowRect(23, 8, 28, 13); + Menu_EraseWindowRect(23, 8, 28, 13); MenuPrintMessage(gOtherText_CaseIsFull, 1, 15); break; case 2: gBerryBlenderData->field_6F++; DestroyMenuCursor(); - MenuZeroFillWindowRect(23, 8, 28, 13); + Menu_EraseWindowRect(23, 8, 28, 13); MenuPrintMessage(gOtherText_OutOfBerries, 1, 15); break; case 3: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gBerryBlenderData->field_6F = 9; break; case 9: @@ -3081,13 +3081,13 @@ void unref_sub_80516F8(u8 taskID) if (task->data[0] == 100) { ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); - MenuDrawTextWindow(4, 4, 10, 12); + Menu_DrawStdWindowFrame(4, 4, 10, 12); for (i = 0; i < 3; i++) { if (gLinkPlayers[i + 1].trainerId != 0) - MenuPrint(gUnknown_08216284[i], 5, (2 * i) + 5); - MenuDrawTextWindow(0, 13, 29, 19); - MenuPrint(gOtherText_PressAToStart, 1, 15); + Menu_PrintText(gUnknown_08216284[i], 5, (2 * i) + 5); + Menu_DrawStdWindowFrame(0, 13, 29, 19); + Menu_PrintText(gOtherText_PressAToStart, 1, 15); } } if (gMain.newKeys & A_BUTTON) @@ -3099,7 +3099,7 @@ void unref_sub_80516F8(u8 taskID) else { if (task->data[0] == 10) - MenuPrint(gOtherText_PleaseWait, 3, 10); + Menu_PrintText(gOtherText_PleaseWait, 3, 10); if (++task->data[0] > 120) task->data[0] = 0; if (byte_3002A68 > 4 && gReceivedRemoteLinkPlayers == 1) @@ -3348,7 +3348,7 @@ static bool8 Blender_PrintBlendingResults(void) u8* textPtr; u16 secondsPassed, minutes, seconds; - MenuDrawTextWindow(4, 2, 25, 17); + Menu_DrawStdWindowFrame(4, 2, 25, 17); sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160); for (i = 0; i < gBerryBlenderData->playersNo; i++) { @@ -3370,7 +3370,7 @@ static bool8 Blender_PrintBlendingResults(void) textPtr += 3; textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0); sub_8072C74(textPtr, text[0], 157, 0); - MenuPrint(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); + Menu_PrintText(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); } ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2); textPtr = gBerryBlenderData->stringVar; @@ -3388,7 +3388,7 @@ static bool8 Blender_PrintBlendingResults(void) textPtr = sub_8072C74(textPtr, text[0], 136, 1); #endif StringCopy(textPtr, gOtherText_RPM); - MenuPrint(gBerryBlenderData->stringVar, 5, 13); + Menu_PrintText(gBerryBlenderData->stringVar, 5, 13); secondsPassed = gBerryBlenderData->gameFrameTime / 60; seconds = secondsPassed % 60; @@ -3408,7 +3408,7 @@ static bool8 Blender_PrintBlendingResults(void) textPtr = sub_8072C74(textPtr, text[1], 136, 1); StringCopy(textPtr, gOtherText_Sec); - MenuPrint(gBerryBlenderData->stringVar, 5, 15); + Menu_PrintText(gBerryBlenderData->stringVar, 5, 15); gBerryBlenderData->framesToWait = 0; gBerryBlenderData->field_0++; @@ -3419,8 +3419,8 @@ static bool8 Blender_PrintBlendingResults(void) gBerryBlenderData->field_0++; break; case 5: - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 14, 29, 19); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 14, 29, 19); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { if (gBerryBlenderData->chosenItemID[i] != 0) @@ -3436,7 +3436,7 @@ static bool8 Blender_PrintBlendingResults(void) gBerryBlenderData->field_0++; break; case 6: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { Blender_TrySettingRecord(); return TRUE; @@ -3536,7 +3536,7 @@ static bool8 Blender_PrintBlendingRanking(void) } break; case 3: - MenuDrawTextWindow(4, 2, 25, 17); + Menu_DrawStdWindowFrame(4, 2, 25, 17); sub_8072BD8(gOtherText_Ranking, 5, 3, 160); gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&sSpriteTemplate_821645C, 140, 52, 0); @@ -3575,7 +3575,7 @@ static bool8 Blender_PrintBlendingRanking(void) txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); - MenuPrint(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); + Menu_PrintText(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); } gBerryBlenderData->framesToWait = 0; gBerryBlenderData->field_0++; @@ -3625,10 +3625,10 @@ static void BlenderDebug_PrintBerryData(void) u8 i; StringCopy(text, sText_BPM); - MenuPrint(text, 2, 0); + Menu_PrintText(text, 2, 0); ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3); - MenuPrint(text, 6, 0); + Menu_PrintText(text, 6, 0); for (i = 0; i < 4; i++) { @@ -3646,7 +3646,7 @@ static void BlenderDebug_PrintBerryData(void) text[7] = EOS; } var = (i * 3) + 3; - MenuPrint(text, 2, var); + Menu_PrintText(text, 2, var); ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2); StringAppend(text, sText_Space); @@ -3666,12 +3666,12 @@ static void BlenderDebug_PrintBerryData(void) ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); text[17] = EOS; - MenuPrint(text, 7, var); + Menu_PrintText(text, 7, var); } if (sBlenderDebug.pokeblock.color != 0) { StringCopy(text, gPokeblockNames[sBlenderDebug.pokeblock.color]); - MenuPrint(text, 2, 15); + Menu_PrintText(text, 2, 15); ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2); StringAppend(text, sText_Space); @@ -3691,7 +3691,7 @@ static void BlenderDebug_PrintBerryData(void) ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); text[17] = EOS; - MenuPrint(text, 7, 17); + Menu_PrintText(text, 7, 17); } } @@ -3743,7 +3743,7 @@ static void sub_80527BC(void) gUnknown_020297DC = 0; } - MenuPrint(text, 2, 15); + Menu_PrintText(text, 2, 15); } static void sub_8052918(void) @@ -3845,9 +3845,9 @@ void ShowBerryBlenderRecordWindow(void) u8 text[30]; s32 i; - MenuDrawTextWindow(6, 3, 23, 16); - MenuPrint(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4); - MenuPrint(gMultiText_2P3P4P, 8, 9); + Menu_DrawStdWindowFrame(6, 3, 23, 16); + Menu_PrintText(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4); + Menu_PrintText(gMultiText_2P3P4P, 8, 9); for (i = 0; i < 3; i++) { @@ -3865,7 +3865,7 @@ void ShowBerryBlenderRecordWindow(void) txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2); StringAppend(txtPtr, gOtherText_RPM); - MenuPrint(text, 15, i * 2 + 9); + Menu_PrintText(text, 15, i * 2 + 9); } } diff --git a/src/scene/credits.c b/src/scene/credits.c index 17c1bf263..54b517a91 100644 --- a/src/scene/credits.c +++ b/src/scene/credits.c @@ -857,7 +857,7 @@ static void task_b_81441B8(u8 taskIdB) case 5: if (!gPaletteFade.active) { - MenuZeroFillWindowRect(0, 9, 29, 19); + Menu_EraseWindowRect(0, 9, 29, 19); gTasks[taskIdB].data[TDB_0] = 2; } return; diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index c0111de7d..8d961ad1f 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -472,9 +472,9 @@ static void CB2_EggHatch_0(void) break; case 1: SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gEggHatchData->window, &gWindowConfig_81E6F84); - gEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20); - LoadTextWindowGraphics(&gEggHatchData->window); + Text_InitWindowWithTemplate(&gEggHatchData->window, &gWindowConfig_81E6F84); + gEggHatchData->tileDataStartOffset = TextWindow_SetBaseTileNum(20); + TextWindow_LoadStdFrameGraphics(&gEggHatchData->window); gMain.state++; break; case 2: @@ -625,7 +625,7 @@ static void CB2_EggHatch_1(void) case 8: if (EggHatchUpdateWindowText()) { - MenuDrawTextWindow(22, 8, 27, 13); + Menu_DrawStdWindowFrame(22, 8, 27, 13); InitYesNoMenu(22, 8, 4); gEggHatchData->CB2_state++; } @@ -848,15 +848,15 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 static void EggHatchPrintMessage1(u8* src) { - sub_8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); + Text_InitWindow8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); } static void EggHatchPrintMessage2(u8* src) { - sub_8003460(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); + Text_InitWindowAndPrintText(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); } static bool8 EggHatchUpdateWindowText(void) { - return sub_80035AC(&gEggHatchData->window); + return Text_UpdateWindow(&gEggHatchData->window); } diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 4ee601360..323313fc2 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -209,7 +209,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gUnknown_030041B0 = 256; gUnknown_030041B8 = 0; - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; sub_800D6D4(); @@ -317,7 +317,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) gUnknown_030041B0 = 256; gUnknown_030041B8 = 0; - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; sub_800D6D4(); @@ -374,14 +374,14 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) break; case 1: SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E6F84); gMain.state++; break; case 2: - LoadTextWindowGraphics(&gUnknown_03004828->window); - gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); - LoadTextWindowGraphics(&gUnknown_03004828->window); - MenuZeroFillScreen(); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); + gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); + Menu_EraseScreen(); ResetPaletteFade(); gMain.state++; SetHBlankCallback(EvoDummyFunc); @@ -481,7 +481,7 @@ static void CB2_EvolutionSceneUpdate(void) { AnimateSprites(); BuildOamBuffer(); - sub_800374C(&gUnknown_03004210); + Text_UpdateWindowInBattle(&gUnknown_03004210); UpdatePaletteFade(); RunTasks(); } @@ -490,7 +490,7 @@ static void CB2_TradeEvolutionSceneUpdate(void) { AnimateSprites(); BuildOamBuffer(); - sub_80035AC(&gUnknown_03004828->window); + Text_UpdateWindow(&gUnknown_03004828->window); UpdatePaletteFade(); RunTasks(); } @@ -558,7 +558,7 @@ static void Task_EvolutionScene(u8 taskID) if (!gPaletteFade.active) { StringExpandPlaceholders(gStringVar4, BattleText_StartEvo); - sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); gTasks[taskID].tState++; } break; @@ -646,7 +646,7 @@ static void Task_EvolutionScene(u8 taskID) if (IsCryFinished() && !gPaletteFade.active) { StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo); - sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); PlayBGM(BGM_FANFA5); gTasks[taskID].tState++; SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); @@ -715,7 +715,7 @@ static void Task_EvolutionScene(u8 taskID) if (IsCryFinished()) { StringExpandPlaceholders(gStringVar4, BattleText_StopEvo); - sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); gTasks[taskID].tEvoWasStopped = TRUE; gTasks[taskID].tState = 14; } @@ -726,7 +726,7 @@ static void Task_EvolutionScene(u8 taskID) sub_8024CEC(); PlayFanfare(BGM_FANFA1); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter gTasks[taskID].tState++; } @@ -743,7 +743,7 @@ static void Task_EvolutionScene(u8 taskID) { sub_8024CEC(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -751,7 +751,7 @@ static void Task_EvolutionScene(u8 taskID) if (gUnknown_03004210.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -761,7 +761,7 @@ static void Task_EvolutionScene(u8 taskID) if (!IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tData9 = 5; gTasks[taskID].tdata10 = 9; gTasks[taskID].tLearnMoveState++; @@ -794,7 +794,7 @@ static void Task_EvolutionScene(u8 taskID) { sub_8023AD8(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); PlaySE(SE_SELECT); if (sEvoCursorPos != 0) gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; @@ -809,7 +809,7 @@ static void Task_EvolutionScene(u8 taskID) { sub_8023AD8(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); PlaySE(SE_SELECT); gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; } @@ -835,7 +835,7 @@ static void Task_EvolutionScene(u8 taskID) if (IsHMMove2(move)) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState = 11; } else @@ -848,7 +848,7 @@ static void Task_EvolutionScene(u8 taskID) RemoveMonPPBonus(mon, var); SetMonMoveSlot(mon, gMoveToLearn, var); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState++; } } @@ -858,7 +858,7 @@ static void Task_EvolutionScene(u8 taskID) if (gUnknown_03004210.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -866,20 +866,20 @@ static void Task_EvolutionScene(u8 taskID) if (gUnknown_03004210.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tState = 19; } break; case 9: StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tData9 = 10; gTasks[taskID].tdata10 = 0; gTasks[taskID].tLearnMoveState = 3; break; case 10: StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tState = 14; break; case 11: @@ -900,7 +900,7 @@ static void Task_TradeEvolutionScene(u8 taskID) { case 0: StringExpandPlaceholders(gStringVar4, BattleText_StartEvo); - sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tState++; break; case 1: @@ -988,7 +988,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (IsCryFinished() && !gPaletteFade.active) { StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo); - sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); PlayFanfare(BGM_FANFA5); gTasks[taskID].tState++; SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); @@ -1022,7 +1022,7 @@ static void Task_TradeEvolutionScene(u8 taskID) else { PlayBGM(BGM_SHINKA); - sub_8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tState++; } } @@ -1040,7 +1040,7 @@ static void Task_TradeEvolutionScene(u8 taskID) sub_8024CEC(); PlayFanfare(BGM_FANFA1); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter gTasks[taskID].tState++; } @@ -1057,7 +1057,7 @@ static void Task_TradeEvolutionScene(u8 taskID) { sub_8024CEC(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -1065,7 +1065,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -1075,7 +1075,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (!IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tData9 = 5; gTasks[taskID].tdata10 = 9; gTasks[taskID].tLearnMoveState++; @@ -1083,10 +1083,10 @@ static void Task_TradeEvolutionScene(u8 taskID) case 3: if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) { - DrawTextWindow(&gUnknown_03004828->window, 24, 8, 29, 13); + TextWindow_DrawStdFrame(&gUnknown_03004828->window, 24, 8, 29, 13); sEvoCursorPos = 0; - InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); - sub_8002F44(&gUnknown_03004828->window); + Text_InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); + Text_PrintWindow8002F44(&gUnknown_03004828->window); sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); sub_81150D8(); gTasks[taskID].tLearnMoveState++; @@ -1113,7 +1113,7 @@ static void Task_TradeEvolutionScene(u8 taskID) ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); DestroyMenuCursor(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); PlaySE(SE_SELECT); if (sEvoCursorPos != 0) gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; @@ -1129,7 +1129,7 @@ static void Task_TradeEvolutionScene(u8 taskID) ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); DestroyMenuCursor(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); PlaySE(SE_SELECT); gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; } @@ -1155,7 +1155,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (IsHMMove2(move)) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState = 11; } else @@ -1168,7 +1168,7 @@ static void Task_TradeEvolutionScene(u8 taskID) RemoveMonPPBonus(mon, var); SetMonMoveSlot(mon, gMoveToLearn, var); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState++; } } @@ -1178,7 +1178,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -1186,20 +1186,20 @@ static void Task_TradeEvolutionScene(u8 taskID) if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tState = 15; } break; case 9: StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tData9 = 10; gTasks[taskID].tdata10 = 0; gTasks[taskID].tLearnMoveState = 3; break; case 10: StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tState = 13; break; case 11: diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 1751ee99c..ae2ff5f87 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -558,8 +558,8 @@ static void sub_814217C(u8 taskID) lastSavedTeam--; } *lastSavedTeam = *fameMons; - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gMenuText_HOFSaving, 3, 15); + Menu_DrawStdWindowFrame(2, 14, 27, 19); + Menu_PrintText(gMenuText_HOFSaving, 3, 15); gTasks[taskID].func = sub_8142274; } @@ -617,7 +617,7 @@ static void sub_8142320(u8 taskID) gSprites[spriteID].data[0] = 0; gSprites[spriteID].callback = sub_81435DC; gTasks[taskID].tMonSpriteID(currPokeID) = spriteID; - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskID].func = sub_8142404; } @@ -670,7 +670,7 @@ static void sub_8142570(u8 taskID) if (gTasks[taskID].tMonSpriteID(i) != 0xFF) gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 0; } - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); sub_8143068(0, 15); PlaySE(SE_DENDOU); gTasks[taskID].tFrameCount = 400; @@ -694,7 +694,7 @@ static void sub_8142618(u8 taskID) gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1; } BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskID].tFrameCount = 7; gTasks[taskID].func = sub_81426F8; } @@ -732,10 +732,10 @@ static void sub_8142794(u8 taskID) gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++; else { - MenuDrawTextWindow(1, 2, 15, 9); + Menu_DrawStdWindowFrame(1, 2, 15, 9); HallOfFame_PrintPlayerInfo(1, 2); - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gMenuText_HOFCongratulations, 4, 15); + Menu_DrawStdWindowFrame(2, 14, 27, 19); + Menu_PrintText(gMenuText_HOFCongratulations, 4, 15); gTasks[taskID].func = sub_8142818; } } @@ -930,7 +930,7 @@ static void sub_8142B04(u8 taskID) stringPtr[1] = 0x13; stringPtr[2] = 0xF0; stringPtr[3] = EOS; - MenuPrint(gStringVar1, 0, 0); + Menu_PrintText(gStringVar1, 0, 0); gTasks[taskID].func = sub_8142CC8; } @@ -1042,14 +1042,14 @@ static void sub_8142FCC(u8 taskID) static void sub_8142FEC(u8 taskID) { - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gMenuText_HOFCorrupt, 3, 15); gTasks[taskID].func = sub_814302C; } static void sub_814302C(u8 taskID) { - if (MenuUpdateWindowText() && gMain.newKeys & A_BUTTON) + if (Menu_UpdateWindowText() && gMain.newKeys & A_BUTTON) gTasks[taskID].func = sub_8142F78; } @@ -1086,7 +1086,7 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) } } - MenuPrint(gStringVar1, a1 + 4, a2 + 1); + Menu_PrintText(gStringVar1, a1 + 4, a2 + 1); stringPtr = gStringVar1; for (i = 0; i < 10 && currMon->nick[i] != EOS; stringPtr[i] = currMon->nick[i], i++) {} @@ -1099,8 +1099,8 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) stringPtr[1] = 0x13; stringPtr[2] = 0xA0; stringPtr[3] = EOS; - MenuPrint(gStringVar1, a1 + 9, a2 + 1); - MenuZeroFillWindowRect(0, a2 + 3, 29, a2 + 4); + Menu_PrintText(gStringVar1, a1 + 9, a2 + 1); + Menu_EraseWindowRect(0, a2 + 3, 29, a2 + 4); } else { @@ -1139,7 +1139,7 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) stringPtr[2] = 0xA0; stringPtr[3] = EOS; - MenuPrint(gStringVar1, a1 + 9, a2 + 1); + Menu_PrintText(gStringVar1, a1 + 9, a2 + 1); monData = currMon->lvl; @@ -1157,14 +1157,14 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) stringPtr[2] = 0x30; stringPtr[3] = EOS; - MenuPrint(gStringVar1, a1 + 7, a2 + 3); + Menu_PrintText(gStringVar1, a1 + 7, a2 + 3); monData = currMon->tid; stringPtr = StringCopy(gStringVar1, gOtherText_IDNumber); ConvertIntToDecimalStringN(stringPtr, monData, 2, 5); - MenuPrint(gStringVar1, a1 + 13, a2 + 3); + Menu_PrintText(gStringVar1, a1 + 13, a2 + 3); } } @@ -1175,15 +1175,15 @@ static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1) u8* stringPtr; u16 visibleTid; - MenuPrint(gOtherText_Name, a0 + 1, a1 + 1); + Menu_PrintText(gOtherText_Name, a0 + 1, a1 + 1); MenuPrint_RightAligned(gSaveBlock2.playerName, a0 + 14, a1 + 1); - MenuPrint(gOtherText_IDNumber2, a0 + 1, a1 + 3); + Menu_PrintText(gOtherText_IDNumber2, a0 + 1, a1 + 3); visibleTid = ByteRead16(gSaveBlock2.playerTrainerId); ConvertIntToDecimalStringN(gStringVar1, visibleTid, 2, 5); MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 3); - MenuPrint(gMainMenuString_Time, a0 + 1, a1 + 5); + Menu_PrintText(gMainMenuString_Time, a0 + 1, a1 + 5); stringPtr = ConvertIntToDecimalString(gStringVar1, gSaveBlock2.playTimeHours); stringPtr[0] = CHAR_SPACE; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index f397e5ebb..b13006c13 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -292,7 +292,7 @@ void ShowContestEntryMonPic(void) u8 left = CONTEST_ENTRY_PIC_LEFT; u8 top = CONTEST_ENTRY_PIC_TOP; - MenuDrawTextWindow(left, top, 19, 13); + Menu_DrawStdWindowFrame(left, top, 19, 13); species = gContestMons[gSpecialVar_0x8006].species; var1 = gContestMons[gSpecialVar_0x8006].personality; var2 = gContestMons[gSpecialVar_0x8006].otId; @@ -349,7 +349,7 @@ void sub_80C5190(u8 taskId) task->data[0]++; break; case 3: - MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); + Menu_EraseWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); DestroyTask(taskId); break; case 1: -- cgit v1.2.3 From 8869cbc98e2f8e761e9ff89182933643992e2bd7 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 00:16:15 -0600 Subject: s/gWindowConfig/gWindowTemplate/g --- asm/contest_link_80C2020.s | 12 ++-- asm/pokemon_storage_system.s | 24 +++---- asm/pokenav.s | 56 ++++++++-------- include/text.h | 114 ++++++++++++++++---------------- src/battle/battle_2.c | 16 ++--- src/battle/reshow_battle_screen.c | 4 +- src/contest.c | 8 +-- src/debug/matsuda_debug_menu.c | 12 ++-- src/debug/sound_check_menu.c | 8 +-- src/easy_chat_1.c | 10 +-- src/easy_chat_2.c | 30 ++++----- src/engine/clear_save_data_menu.c | 4 +- src/engine/link.c | 8 +-- src/engine/main_menu.c | 12 ++-- src/engine/mystery_event_menu.c | 4 +- src/engine/naming_screen.c | 22 +++---- src/engine/option_menu.c | 4 +- src/engine/reset_rtc_screen.c | 4 +- src/engine/save_failed_screen.c | 4 +- src/engine/text.c | 122 +++++++++++++++++------------------ src/engine/trade.c | 40 ++++++------ src/field/berry_tag_screen.c | 4 +- src/field/diploma.c | 4 +- src/field/field_effect.c | 8 +-- src/field/field_message_box.c | 2 +- src/field/field_region_map.c | 4 +- src/field/field_screen_effect.c | 2 +- src/field/item_menu.c | 4 +- src/field/mauville_man.c | 2 +- src/field/overworld.c | 16 ++--- src/field/party_menu.c | 12 ++-- src/field/pokeblock.c | 24 +++---- src/field/region_map.c | 4 +- src/field/script_menu.c | 2 +- src/field/shop.c | 4 +- src/field/slot_machine.c | 8 +-- src/field/start_menu.c | 6 +- src/field/starter_choose.c | 4 +- src/field/use_pokeblock.c | 14 ++-- src/field/wallclock.c | 4 +- src/pokemon/learn_move.c | 24 +++---- src/pokemon/mail.c | 4 +- src/pokemon/pokeblock_feed.c | 4 +- src/pokemon/pokedex.c | 28 ++++---- src/pokemon/pokemon_summary_screen.c | 4 +- src/pokenav_before.c | 24 +++---- src/roulette.c | 4 +- src/scene/berry_blender.c | 18 +++--- src/scene/contest_painting.c | 4 +- src/scene/credits.c | 4 +- src/scene/egg_hatch.c | 4 +- src/scene/evolution_scene.c | 12 ++-- src/scene/hall_of_fame.c | 16 ++--- 53 files changed, 398 insertions(+), 398 deletions(-) diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 096ce91e7..5e1265f6b 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -12,7 +12,7 @@ sub_80C2020: @ 80C2020 lsls r5, 19 movs r0, 0x40 strh r0, [r5] - ldr r4, _080C20F0 @ =gWindowConfig_81E6FA0 + ldr r4, _080C20F0 @ =gWindowTemplate_81E6FA0 adds r0, r4, 0 bl SetUpWindowConfig ldr r0, _080C20F4 @ =gMenuWindow @@ -110,7 +110,7 @@ sub_80C2020: @ 80C2020 pop {r0} bx r0 .align 2, 0 -_080C20F0: .4byte gWindowConfig_81E6FA0 +_080C20F0: .4byte gWindowTemplate_81E6FA0 _080C20F4: .4byte gMenuWindow _080C20F8: .4byte REG_BG0CNT _080C20FC: .4byte 0x00001803 @@ -188,7 +188,7 @@ _080C2162: lsls r2, 2 movs r1, 0 bl LoadCompressedPalette - ldr r0, _080C2234 @ =gWindowConfig_81E6FA0 + ldr r0, _080C2234 @ =gWindowTemplate_81E6FA0 bl LoadFontDefaultPalette movs r6, 0 _080C21C0: @@ -242,7 +242,7 @@ _080C2224: .4byte 0x0600e000 _080C2228: .4byte gUnknown_08D1A250 _080C222C: .4byte 0x0600f000 _080C2230: .4byte gUnknown_08D1A618 -_080C2234: .4byte gWindowConfig_81E6FA0 +_080C2234: .4byte gWindowTemplate_81E6FA0 _080C2238: .4byte 0x000060b2 _080C223C: .4byte 0x000060a4 _080C2240: @@ -2170,7 +2170,7 @@ sub_80C3158: @ 80C3158 lsls r0, 22 lsrs r0, 22 strh r0, [r4, 0x6] - ldr r1, _080C32C4 @ =gWindowConfig_81E7278 + ldr r1, _080C32C4 @ =gWindowTemplate_81E7278 mov r8, r1 ldr r7, _080C32C8 @ =0x06010000 ldr r2, _080C32CC @ =0x040000d4 @@ -2296,7 +2296,7 @@ _080C32B2: b _080C3322 .align 2, 0 _080C32C0: .4byte gSprites -_080C32C4: .4byte gWindowConfig_81E7278 +_080C32C4: .4byte gWindowTemplate_81E7278 _080C32C8: .4byte 0x06010000 _080C32CC: .4byte 0x040000d4 _080C32D0: .4byte 0x85000100 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 2954c0b09..fd49e1520 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1640,7 +1640,7 @@ sub_80966F4: @ 80966F4 ldr r0, _08096778 @ =0x81000200 str r0, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, _0809677C @ =gWindowConfig_81E6D38 + ldr r0, _0809677C @ =gWindowTemplate_81E6D38 adds r1, r5, 0 mov r2, r8 bl sub_8004E3C @@ -1662,7 +1662,7 @@ _0809676C: .4byte gUnknown_083B6DB8 _08096770: .4byte 0x00001111 _08096774: .4byte 0x040000d4 _08096778: .4byte 0x81000200 -_0809677C: .4byte gWindowConfig_81E6D38 +_0809677C: .4byte gWindowTemplate_81E6D38 _08096780: .4byte 0x80000200 thumb_func_end sub_80966F4 @@ -1846,18 +1846,18 @@ _080968D4: bl sub_8096804 b _0809697A _080968E8: - ldr r0, _080968F0 @ =gWindowConfig_81E6D00 + ldr r0, _080968F0 @ =gWindowTemplate_81E6D00 bl SetUpWindowConfig b _0809697A .align 2, 0 -_080968F0: .4byte gWindowConfig_81E6D00 +_080968F0: .4byte gWindowTemplate_81E6D00 _080968F4: - ldr r0, _08096900 @ =gWindowConfig_81E6D00 + ldr r0, _08096900 @ =gWindowTemplate_81E6D00 bl InitMenuWindow bl Menu_EraseScreen b _0809697A .align 2, 0 -_08096900: .4byte gWindowConfig_81E6D00 +_08096900: .4byte gWindowTemplate_81E6D00 _08096904: bl sub_80967DC bl sub_8096848 @@ -1985,18 +1985,18 @@ _08096A28: .4byte gSharedMem _08096A2C: .4byte gUnknown_0203847D _08096A30: .4byte gUnknown_0203847F _08096A34: - ldr r0, _08096A3C @ =gWindowConfig_81E6D00 + ldr r0, _08096A3C @ =gWindowTemplate_81E6D00 bl SetUpWindowConfig b _08096AD8 .align 2, 0 -_08096A3C: .4byte gWindowConfig_81E6D00 +_08096A3C: .4byte gWindowTemplate_81E6D00 _08096A40: - ldr r0, _08096A4C @ =gWindowConfig_81E6D00 + ldr r0, _08096A4C @ =gWindowTemplate_81E6D00 bl InitMenuWindow bl Menu_EraseScreen b _08096AD8 .align 2, 0 -_08096A4C: .4byte gWindowConfig_81E6D00 +_08096A4C: .4byte gWindowTemplate_81E6D00 _08096A50: bl sub_80967DC b _08096AD8 @@ -8745,7 +8745,7 @@ sub_809A1BC: @ 809A1BC ldr r0, _0809A230 @ =0x81000100 str r0, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, _0809A234 @ =gWindowConfig_81E6D38 + ldr r0, _0809A234 @ =gWindowTemplate_81E6D38 adds r1, r5, 0 str r3, [sp, 0x4] bl sub_8004E3C @@ -8785,7 +8785,7 @@ sub_809A1BC: @ 809A1BC _0809A228: .4byte gUnknown_083B6DB8 _0809A22C: .4byte 0x040000d4 _0809A230: .4byte 0x81000100 -_0809A234: .4byte gWindowConfig_81E6D38 +_0809A234: .4byte gWindowTemplate_81E6D38 _0809A238: .4byte 0x80000040 thumb_func_end sub_809A1BC diff --git a/asm/pokenav.s b/asm/pokenav.s index 7db96ed0f..34d8aba2e 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -229,7 +229,7 @@ _080F07E0: lsrs r1, 16 bl sub_80F445C _080F07F4: - ldr r0, _080F0814 @ =gWindowConfig_81E710C + ldr r0, _080F0814 @ =gWindowTemplate_81E710C bl BasicInitMenuWindow ldr r0, _080F0818 @ =gUnknown_083DFEC4 ldr r0, [r0] @@ -243,7 +243,7 @@ _080F080A: bx r0 .align 2, 0 _080F0810: .4byte 0x00008788 -_080F0814: .4byte gWindowConfig_81E710C +_080F0814: .4byte gWindowTemplate_81E710C _080F0818: .4byte gUnknown_083DFEC4 thumb_func_end ShowMapNamePopUpWindow @@ -252,7 +252,7 @@ sub_80F081C: @ 80F081C push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r0, _080F0838 @ =gWindowConfig_81E710C + ldr r0, _080F0838 @ =gWindowTemplate_81E710C bl BasicInitMenuWindow cmp r5, 0x4 bhi _080F08C6 @@ -262,7 +262,7 @@ sub_80F081C: @ 80F081C ldr r0, [r0] mov pc, r0 .align 2, 0 -_080F0838: .4byte gWindowConfig_81E710C +_080F0838: .4byte gWindowTemplate_81E710C _080F083C: .4byte _080F0840 .align 2, 0 _080F0840: @@ -342,7 +342,7 @@ _080F08E0: .4byte 0x0001869f thumb_func_start sub_80F08E4 sub_80F08E4: @ 80F08E4 push {lr} - ldr r0, _080F08FC @ =gWindowConfig_81E710C + ldr r0, _080F08FC @ =gWindowTemplate_81E710C bl BasicInitMenuWindow movs r0, 0 movs r1, 0x9 @@ -352,7 +352,7 @@ sub_80F08E4: @ 80F08E4 pop {r0} bx r0 .align 2, 0 -_080F08FC: .4byte gWindowConfig_81E710C +_080F08FC: .4byte gWindowTemplate_81E710C thumb_func_end sub_80F08E4 thumb_func_start sub_80F0900 @@ -527,7 +527,7 @@ _080F0A40: adds r0, r4, 0 adds r1, r3, 0 bl sub_80F4428 - ldr r0, _080F0A70 @ =gWindowConfig_81E70D4 + ldr r0, _080F0A70 @ =gWindowTemplate_81E70D4 bl BasicInitMenuWindow lsls r2, r5, 24 lsrs r2, 24 @@ -541,7 +541,7 @@ _080F0A40: _080F0A64: .4byte gUnknown_083DFEC4 _080F0A68: .4byte 0x000087c8 _080F0A6C: .4byte 0x00008788 -_080F0A70: .4byte gWindowConfig_81E70D4 +_080F0A70: .4byte gWindowTemplate_81E70D4 thumb_func_end sub_80F0A24 thumb_func_start sub_80F0A74 @@ -561,7 +561,7 @@ sub_80F0A74: @ 80F0A74 bl sub_80F700C movs r0, 0x1F ands r7, r0 - ldr r0, _080F0AE4 @ =gWindowConfig_81E70D4 + ldr r0, _080F0AE4 @ =gWindowTemplate_81E70D4 bl BasicInitMenuWindow lsls r2, r7, 3 adds r0, r4, 0 @@ -597,7 +597,7 @@ sub_80F0A74: @ 80F0A74 .align 2, 0 _080F0ADC: .4byte gUnknown_083DFEC4 _080F0AE0: .4byte 0x00008788 -_080F0AE4: .4byte gWindowConfig_81E70D4 +_080F0AE4: .4byte gWindowTemplate_81E70D4 _080F0AE8: .4byte 0x0000d158 _080F0AEC: .4byte 0x0000ceed _080F0AF0: .4byte 0x0600f000 @@ -688,7 +688,7 @@ _080F0B60: ldrsh r0, [r0, r1] cmp r2, r0 beq _080F0BAA - ldr r0, _080F0BC8 @ =gWindowConfig_81E70D4 + ldr r0, _080F0BC8 @ =gWindowTemplate_81E70D4 bl BasicInitMenuWindow adds r1, r4, 0 adds r3, r1, 0x1 @@ -709,9 +709,9 @@ _080F0BB4: _080F0BBC: .4byte 0x00000306 _080F0BC0: .4byte 0x00008778 _080F0BC4: .4byte 0x0000876c -_080F0BC8: .4byte gWindowConfig_81E70D4 +_080F0BC8: .4byte gWindowTemplate_81E70D4 _080F0BCC: - ldr r0, _080F0C10 @ =gWindowConfig_81E70D4 + ldr r0, _080F0C10 @ =gWindowTemplate_81E70D4 bl BasicInitMenuWindow ldr r1, _080F0C14 @ =0x00008778 adds r0, r5, r1 @@ -745,7 +745,7 @@ _080F0BE2: movs r0, 0 b _080F0C22 .align 2, 0 -_080F0C10: .4byte gWindowConfig_81E70D4 +_080F0C10: .4byte gWindowTemplate_81E70D4 _080F0C14: .4byte 0x00008778 _080F0C18: .4byte gUnknown_083DFEC4 _080F0C1C: .4byte 0x0000d15c @@ -804,7 +804,7 @@ _080F0C64: bls _080F0CD0 movs r0, 0 strh r0, [r1] - ldr r0, _080F0CC4 @ =gWindowConfig_81E70D4 + ldr r0, _080F0CC4 @ =gWindowTemplate_81E70D4 bl BasicInitMenuWindow ldr r0, _080F0CC8 @ =0x00008770 adds r1, r4, r0 @@ -835,7 +835,7 @@ _080F0C64: .align 2, 0 _080F0CBC: .4byte 0x00000306 _080F0CC0: .4byte 0x0000ffff -_080F0CC4: .4byte gWindowConfig_81E70D4 +_080F0CC4: .4byte gWindowTemplate_81E70D4 _080F0CC8: .4byte 0x00008770 _080F0CCC: .4byte 0x00008778 _080F0CD0: @@ -942,7 +942,7 @@ _080F0D78: _080F0D8C: movs r0, 0 strh r0, [r1] - ldr r0, _080F0DBC @ =gWindowConfig_81E70D4 + ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4 bl BasicInitMenuWindow ldr r0, _080F0DC0 @ =0x00008778 adds r1, r4, r0 @@ -962,7 +962,7 @@ _080F0D8C: mov pc, r0 .align 2, 0 _080F0DB8: .4byte 0x00000306 -_080F0DBC: .4byte gWindowConfig_81E70D4 +_080F0DBC: .4byte gWindowTemplate_81E70D4 _080F0DC0: .4byte 0x00008778 _080F0DC4: .4byte _080F0DC8 .align 2, 0 @@ -1141,7 +1141,7 @@ _080F0F10: adds r4, r0 movs r0, 0x1F ands r4, r0 - ldr r0, _080F0F60 @ =gWindowConfig_81E70D4 + ldr r0, _080F0F60 @ =gWindowTemplate_81E70D4 bl BasicInitMenuWindow adds r3, r4, 0x1 movs r0, 0xC @@ -1160,7 +1160,7 @@ _080F0F52: .align 2, 0 _080F0F58: .4byte 0x00000306 _080F0F5C: .4byte 0x00008778 -_080F0F60: .4byte gWindowConfig_81E70D4 +_080F0F60: .4byte gWindowTemplate_81E70D4 thumb_func_end sub_80F0EF4 thumb_func_start sub_80F0F64 @@ -1260,7 +1260,7 @@ sub_80F0FFC: @ 80F0FFC adds r0, r5, 0 movs r2, 0 bl GetMapSectionName - ldr r0, _080F1054 @ =gWindowConfig_81E710C + ldr r0, _080F1054 @ =gWindowTemplate_81E710C bl BasicInitMenuWindow adds r0, r5, 0 bl sub_80F19DC @@ -1282,7 +1282,7 @@ sub_80F0FFC: @ 80F0FFC _080F1048: .4byte gUnknown_083DFEC4 _080F104C: .4byte 0x00008788 _080F1050: .4byte 0x0000ceea -_080F1054: .4byte gWindowConfig_81E710C +_080F1054: .4byte gWindowTemplate_81E710C _080F1058: .4byte 0x0000d138 thumb_func_end sub_80F0FFC @@ -1357,17 +1357,17 @@ _080F10E8: _080F10FC: .4byte gUnknown_083DFEC4 _080F1100: .4byte 0x0000d162 _080F1104: - ldr r0, _080F110C @ =gWindowConfig_81E70B8 + ldr r0, _080F110C @ =gWindowTemplate_81E70B8 bl SetUpWindowConfig b _080F1218 .align 2, 0 -_080F110C: .4byte gWindowConfig_81E70B8 +_080F110C: .4byte gWindowTemplate_81E70B8 _080F1110: - ldr r0, _080F1118 @ =gWindowConfig_81E70B8 + ldr r0, _080F1118 @ =gWindowTemplate_81E70B8 bl MultistepInitMenuWindowBegin b _080F1218 .align 2, 0 -_080F1118: .4byte gWindowConfig_81E70B8 +_080F1118: .4byte gWindowTemplate_81E70B8 _080F111C: bl MultistepInitMenuWindowContinue cmp r0, 0 @@ -7663,7 +7663,7 @@ sub_80F4194: @ 80F4194 str r1, [r4, 0x4] str r3, [r4, 0x8] ldr r0, [r4, 0x8] - ldr r0, _080F42B4 @ =gWindowConfig_81E70F0 + ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0 adds r1, r6, 0 bl sub_8004E3C movs r3, 0x88 @@ -7779,7 +7779,7 @@ _080F42A4: .4byte gUnknown_083DFEC8 _080F42A8: .4byte 0x00001111 _080F42AC: .4byte 0x040000d4 _080F42B0: .4byte 0x81000140 -_080F42B4: .4byte gWindowConfig_81E70F0 +_080F42B4: .4byte gWindowTemplate_81E70F0 _080F42B8: .4byte 0x81000030 _080F42BC: .4byte 0x0fffffff _080F42C0: .4byte 0x80000040 diff --git a/include/text.h b/include/text.h index edda0c2ca..c34f222d5 100644 --- a/include/text.h +++ b/include/text.h @@ -137,65 +137,65 @@ extern const u16 gUnknown_081E29D8[]; extern const u16 gUnknown_081E29E0[]; extern const u16 gUnknown_081E29E8[]; -extern const struct WindowTemplate gWindowConfig_81E6C3C; -extern const struct WindowTemplate gWindowConfig_81E6C58; -extern const struct WindowTemplate gWindowConfig_81E6C74; -extern const struct WindowTemplate gWindowConfig_81E6C90; -extern const struct WindowTemplate gWindowConfig_81E6CAC; -extern const struct WindowTemplate gWindowConfig_81E6CC8; -extern const struct WindowTemplate gWindowConfig_81E6CE4; -extern const struct WindowTemplate gWindowConfig_81E6D00; -extern const struct WindowTemplate gWindowConfig_81E6D1C; -extern const struct WindowTemplate gWindowConfig_81E6D38; -extern const struct WindowTemplate gWindowConfig_81E6D54; -extern const struct WindowTemplate gWindowConfig_81E6D70; -extern const struct WindowTemplate gWindowConfig_81E6D8C; -extern const struct WindowTemplate gWindowConfig_81E6DA8; +extern const struct WindowTemplate gWindowTemplate_81E6C3C; +extern const struct WindowTemplate gWindowTemplate_81E6C58; +extern const struct WindowTemplate gWindowTemplate_81E6C74; +extern const struct WindowTemplate gWindowTemplate_81E6C90; +extern const struct WindowTemplate gWindowTemplate_81E6CAC; +extern const struct WindowTemplate gWindowTemplate_81E6CC8; +extern const struct WindowTemplate gWindowTemplate_81E6CE4; +extern const struct WindowTemplate gWindowTemplate_81E6D00; +extern const struct WindowTemplate gWindowTemplate_81E6D1C; +extern const struct WindowTemplate gWindowTemplate_81E6D38; +extern const struct WindowTemplate gWindowTemplate_81E6D54; +extern const struct WindowTemplate gWindowTemplate_81E6D70; +extern const struct WindowTemplate gWindowTemplate_81E6D8C; +extern const struct WindowTemplate gWindowTemplate_81E6DA8; extern const struct WindowTemplate WindowConfig_TrainerCard_Back_Values; extern const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels; -extern const struct WindowTemplate gWindowConfig_81E6DFC; -extern const struct WindowTemplate gWindowConfig_81E6E18; -extern const struct WindowTemplate gWindowConfig_81E6E34; -extern const struct WindowTemplate gWindowConfig_81E6E50; -extern const struct WindowTemplate gWindowConfig_81E6E6C; -extern const struct WindowTemplate gWindowConfig_81E6E88; -extern const struct WindowTemplate gWindowConfig_81E6EA4; -extern const struct WindowTemplate gWindowConfig_81E6EC0; -extern const struct WindowTemplate gWindowConfig_81E6EDC; -extern const struct WindowTemplate gWindowConfig_81E6EF8; -extern const struct WindowTemplate gWindowConfig_81E6F14; -extern const struct WindowTemplate gWindowConfig_81E6F30; -extern const struct WindowTemplate gWindowConfig_81E6F4C; -extern const struct WindowTemplate gWindowConfig_81E6F68; -extern const struct WindowTemplate gWindowConfig_81E6F84; -extern const struct WindowTemplate gWindowConfig_81E6FA0; -extern const struct WindowTemplate gWindowConfig_81E6FBC; -extern const struct WindowTemplate gWindowConfig_81E6FD8; -extern const struct WindowTemplate gWindowConfig_81E6FF4; -extern const struct WindowTemplate gWindowConfig_81E7010; -extern const struct WindowTemplate gWindowConfig_81E702C; -extern const struct WindowTemplate gWindowConfig_81E7048; -extern const struct WindowTemplate gWindowConfig_81E7064; -extern const struct WindowTemplate gWindowConfig_81E7080; -extern const struct WindowTemplate gWindowConfig_81E709C; -extern const struct WindowTemplate gWindowConfig_81E70B8; -extern const struct WindowTemplate gWindowConfig_81E70D4; -extern const struct WindowTemplate gWindowConfig_81E70F0; -extern const struct WindowTemplate gWindowConfig_81E710C; -extern const struct WindowTemplate gWindowConfig_81E7128; -extern const struct WindowTemplate gWindowConfig_81E7144; -extern const struct WindowTemplate gWindowConfig_81E7160; -extern const struct WindowTemplate gWindowConfig_81E717C; -extern const struct WindowTemplate gWindowConfig_81E7198; -extern const struct WindowTemplate gWindowConfig_81E71B4; -extern const struct WindowTemplate gWindowConfig_81E71D0; -extern const struct WindowTemplate gWindowConfig_81E71EC; -extern const struct WindowTemplate gWindowConfig_81E7208; -extern const struct WindowTemplate gWindowConfig_81E7224; -extern const struct WindowTemplate gWindowConfig_81E7240; -extern const struct WindowTemplate gWindowConfig_81E725C; -extern const struct WindowTemplate gWindowConfig_81E7278; -extern const struct WindowTemplate gWindowConfig_81E7294; +extern const struct WindowTemplate gWindowTemplate_81E6DFC; +extern const struct WindowTemplate gWindowTemplate_81E6E18; +extern const struct WindowTemplate gWindowTemplate_81E6E34; +extern const struct WindowTemplate gWindowTemplate_81E6E50; +extern const struct WindowTemplate gWindowTemplate_81E6E6C; +extern const struct WindowTemplate gWindowTemplate_81E6E88; +extern const struct WindowTemplate gWindowTemplate_81E6EA4; +extern const struct WindowTemplate gWindowTemplate_81E6EC0; +extern const struct WindowTemplate gWindowTemplate_81E6EDC; +extern const struct WindowTemplate gWindowTemplate_81E6EF8; +extern const struct WindowTemplate gWindowTemplate_81E6F14; +extern const struct WindowTemplate gWindowTemplate_81E6F30; +extern const struct WindowTemplate gWindowTemplate_81E6F4C; +extern const struct WindowTemplate gWindowTemplate_81E6F68; +extern const struct WindowTemplate gWindowTemplate_81E6F84; +extern const struct WindowTemplate gWindowTemplate_81E6FA0; +extern const struct WindowTemplate gWindowTemplate_81E6FBC; +extern const struct WindowTemplate gWindowTemplate_81E6FD8; +extern const struct WindowTemplate gWindowTemplate_81E6FF4; +extern const struct WindowTemplate gWindowTemplate_81E7010; +extern const struct WindowTemplate gWindowTemplate_81E702C; +extern const struct WindowTemplate gWindowTemplate_81E7048; +extern const struct WindowTemplate gWindowTemplate_81E7064; +extern const struct WindowTemplate gWindowTemplate_81E7080; +extern const struct WindowTemplate gWindowTemplate_81E709C; +extern const struct WindowTemplate gWindowTemplate_81E70B8; +extern const struct WindowTemplate gWindowTemplate_81E70D4; +extern const struct WindowTemplate gWindowTemplate_81E70F0; +extern const struct WindowTemplate gWindowTemplate_81E710C; +extern const struct WindowTemplate gWindowTemplate_81E7128; +extern const struct WindowTemplate gWindowTemplate_81E7144; +extern const struct WindowTemplate gWindowTemplate_81E7160; +extern const struct WindowTemplate gWindowTemplate_81E717C; +extern const struct WindowTemplate gWindowTemplate_81E7198; +extern const struct WindowTemplate gWindowTemplate_81E71B4; +extern const struct WindowTemplate gWindowTemplate_81E71D0; +extern const struct WindowTemplate gWindowTemplate_81E71EC; +extern const struct WindowTemplate gWindowTemplate_81E7208; +extern const struct WindowTemplate gWindowTemplate_81E7224; +extern const struct WindowTemplate gWindowTemplate_81E7240; +extern const struct WindowTemplate gWindowTemplate_81E725C; +extern const struct WindowTemplate gWindowTemplate_81E7278; +extern const struct WindowTemplate gWindowTemplate_81E7294; extern u16 gBGTilemapBuffers[4][0x400]; diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index dccf73fa8..42cc0b538 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -234,7 +234,7 @@ void InitBattle(void) } //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); sub_80895F8(gUnknown_081F9674); - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -245,9 +245,9 @@ void InitBattle(void) gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; gBattleTerrain = BattleSetup_GetTerrain(); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); - Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowConfig_81E71D0); - Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowConfig_81E71EC); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); + Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC); sub_800D6D4(); sub_800DAB8(); ResetSpriteData(); @@ -1210,7 +1210,7 @@ void c2_8011A1C(void) gUnknown_03004DE0[0][i] = 0xFF10; gUnknown_03004DE0[1][i] = 0xFF10; } - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -1221,9 +1221,9 @@ void c2_8011A1C(void) gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); - Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowConfig_81E71D0); - Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowConfig_81E71EC); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); + Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC); sub_800D6D4(); LoadCompressedPalette(gUnknown_08D004E0, 0, 64); sub_800D74C(); diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index fded87090..bf77e5c07 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -78,9 +78,9 @@ static void CB2_ReshowBattleScreenAfterMenu(void) { case 0: dp12_8087EA4(); - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gBattle_BG1_X = 0; diff --git a/src/contest.c b/src/contest.c index c935f0ecb..3677a1d25 100644 --- a/src/contest.c +++ b/src/contest.c @@ -357,16 +357,16 @@ void LoadContestBgAfterMoveAnim(void) void SetUpContestWindow(void) { - SetUpWindowConfig(&gWindowConfig_81E6FD8); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6FD8); - Text_InitWindowWithTemplate(&gMenuWindow, &gWindowConfig_81E6FF4); + SetUpWindowConfig(&gWindowTemplate_81E6FD8); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6FF4); } void sub_80AB350(void) { u8 i; - LoadFontDefaultPalette(&gWindowConfig_81E6FD8); + LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); FillPalette(0, 0, 2); for (i = 10; i < 14; i++) LoadPalette(gPlttBufferUnfaded + 241, 240 + i, 2); diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 2c20ba72b..52b83d4b1 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -449,8 +449,8 @@ static void sub_80A9F50(void) { REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP; REG_DISPCNT |= DISPCNT_OBJ_ON | DISPCNT_BG0_ON; - SetUpWindowConfig(&gWindowConfig_81E6C3C); - Text_InitWindowWithTemplate(&gMenuWindow, &gWindowConfig_81E6C3C); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6C3C); REG_MOSAIC = 0; REG_BLDCNT = 0; REG_BLDALPHA = 0; @@ -490,7 +490,7 @@ static void sub_80A9FE4(void) } } sub_80034D4((void *)VRAM, ptr); - LoadFontDefaultPalette(&gWindowConfig_81E6C3C); + LoadFontDefaultPalette(&gWindowTemplate_81E6C3C); } static void sub_80AA064(void) @@ -1075,9 +1075,9 @@ void unref_sub_80AB084(u8 *text) break; } } - SetUpWindowConfig(&gWindowConfig_81E6FD8); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6FD8); - LoadFontDefaultPalette(&gWindowConfig_81E6FD8); + SetUpWindowConfig(&gWindowTemplate_81E6FD8); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); + LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); } diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 4f4a7bd06..411ff6f54 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -132,8 +132,8 @@ void CB2_StartSoundCheckMenu(void) ResetPaletteFade(); ResetTasks(); ResetSpriteData(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); REG_WIN0H = WIN_RANGE(0, 0); REG_WIN0V = WIN_RANGE(0, 0); @@ -1217,8 +1217,8 @@ void Task_InitCryTest(u8 taskId) struct CryRelatedStruct cryStruct, cryStruct2; u8 zero; - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); gSoundTestCryNum = 1; ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 908e4b9d6..8d68adfe9 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -16,8 +16,8 @@ #include "strings.h" #include "unknown_task.h" -extern const struct WindowTemplate gWindowConfig_81E6D54; -extern const struct WindowTemplate gWindowConfig_81E6DA8; +extern const struct WindowTemplate gWindowTemplate_81E6D54; +extern const struct WindowTemplate gWindowTemplate_81E6DA8; extern void sub_80546B8(void); @@ -305,11 +305,11 @@ void sub_80E62F8(void) FreeAllSpritePalettes(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E6DA8); + SetUpWindowConfig(&gWindowTemplate_81E6DA8); break; case 2: - InitMenuWindow(&gWindowConfig_81E6D54); - InitMenuWindow(&gWindowConfig_81E6DA8); + InitMenuWindow(&gWindowTemplate_81E6D54); + InitMenuWindow(&gWindowTemplate_81E6DA8); Menu_EraseScreen(); break; case 3: diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 5acdba04e..66af7fc04 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1064,7 +1064,7 @@ void sub_80E91B0(const u8 *a, u8 b, u8 c, u8 d) void sub_80E91D4(u8 a) { - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); if (a == 10) { @@ -1168,7 +1168,7 @@ void sub_80E9368(u8 a) break; } - BasicInitMenuWindow(&gWindowConfig_81E6D8C); + BasicInitMenuWindow(&gWindowTemplate_81E6D8C); gEasyChatStruct->unk9F8E[0] = EXT_CTRL_CODE_BEGIN; gEasyChatStruct->unk9F8E[1] = 5; gEasyChatStruct->unk9F8E[2] = 1; @@ -1189,7 +1189,7 @@ void sub_80E9368(u8 a) Menu_PrintText(gEasyChatStruct->unk9F8E, 0, 0); Menu_PrintText(gEasyChatStruct->unk9F8E, 28, 0); } - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); } void sub_80E948C(void) @@ -1219,7 +1219,7 @@ void sub_80E948C(void) void sub_80E95A4(void) { - BasicInitMenuWindow(&gWindowConfig_81E6D8C); + BasicInitMenuWindow(&gWindowTemplate_81E6D8C); switch (gEasyChatStruct->unk9) { case 4: @@ -1241,7 +1241,7 @@ void sub_80E95A4(void) sub_80E9620(3, 6); break; } - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); } void sub_80E9620(u16 a, u16 b) @@ -1281,7 +1281,7 @@ void sub_80E9620(u16 a, u16 b) void sub_80E9744(void) { - BasicInitMenuWindow(&gWindowConfig_81E6D8C); + BasicInitMenuWindow(&gWindowTemplate_81E6D8C); switch (gEasyChatStruct->unk9) { case 4: @@ -1303,7 +1303,7 @@ void sub_80E9744(void) sub_80E97C0(3, 6); break; } - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); } void sub_80E97C0(u16 a, u16 b) @@ -1348,7 +1348,7 @@ void sub_80E98C4(void) u8 r1; u8 r3; - BasicInitMenuWindow(&gWindowConfig_81E6D8C); + BasicInitMenuWindow(&gWindowTemplate_81E6D8C); switch (gEasyChatStruct->unk9) { case 4: @@ -1379,7 +1379,7 @@ void sub_80E98C4(void) return; } Menu_BlankWindowRect(2, r1, 27, r3 * 2 + r1 - 1); - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); } void sub_80E9940(u8 *a, u8 b) @@ -1420,7 +1420,7 @@ const u8 *const gUnknown_083DBEAC[] = void sub_80E9974(void) { - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); if (gEasyChatStruct->unk26 == 0) { u16 i; @@ -1479,7 +1479,7 @@ void sub_80E9AD4(void) { u16 i; - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); for (i = 0; i < 16; i++) sub_80E9C74(i); } @@ -1502,16 +1502,16 @@ void sub_80E9AF8(u16 a) for (i = 0; i < gEasyChatStruct->unk99A6[a]; i++) { if (sub_80EB2D4(gEasyChatStruct->unk9A2A[a][i]) == 7) - BasicInitMenuWindow(&gWindowConfig_81E6D70); + BasicInitMenuWindow(&gWindowTemplate_81E6D70); else - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); sub_80EB218(r8, gEasyChatStruct->unk9A2A[a][i], 9); sub_80E9A60(gEasyChatStruct->unk9E14, i * 11 + 4, a * 2); } } else { - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); for (i = 0; i < gEasyChatStruct->unk99A6[a]; i++) { sub_80EB218(r8, gEasyChatStruct->unk9A2A[a][i], 9); @@ -1562,7 +1562,7 @@ void sub_80E9D7C(void) u16 r4; u16 i; - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); if (gEasyChatStruct->unk1C0 < 0) { r6 = -gEasyChatStruct->unk1C0; diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index ae6c85180..6a597690a 100644 --- a/src/engine/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c @@ -133,8 +133,8 @@ static u8 InitClearSaveDataScreen(void) ResetTasks(); ResetSpriteData(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); ime = REG_IME; diff --git a/src/engine/link.c b/src/engine/link.c index a2df02b5f..d52d0bb7a 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -238,8 +238,8 @@ void LinkTestScreen(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); ResetBlockSend(); gLinkType = 0x1111; OpenLink(); @@ -1236,8 +1236,8 @@ void CB2_LinkError(void) FillPalette(0, 0, 2); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - SetUpWindowConfig(&gWindowConfig_81E7198); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E7198); + SetUpWindowConfig(&gWindowTemplate_81E7198); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E7198); Menu_EraseScreen(); REG_BLDALPHA = 0; REG_BG0VOFS = 0; diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 623969802..723886664 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -233,8 +233,8 @@ u32 InitMainMenu(u8 a1) ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); if (a1) BeginNormalPaletteFade(-1, 0, 0x10, 0, 0x0000); // fade to black @@ -750,8 +750,8 @@ void PrintBadgeCount(void) static void Task_NewGameSpeech1(u8 taskId) { - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); REG_WIN0H = 0; REG_WIN0V = 0; REG_WININ = 0; @@ -1373,8 +1373,8 @@ void CB_ContinueNewGameSpeechPart2() FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); if (gSaveBlock2.playerGender != MALE) { diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index abb912938..278760233 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -45,8 +45,8 @@ void CB2_InitMysteryEventMenu(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; REG_BLDCNT = 0; diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index 5685584f5..880187dc0 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -325,8 +325,8 @@ static void NamingScreen_Init(void) static void NamingScreen_SetUpWindow(void) { - SetUpWindowConfig(&gWindowConfig_81E6E88); - InitMenuWindow(&gWindowConfig_81E6E88); + SetUpWindowConfig(&gWindowTemplate_81E6E88); + InitMenuWindow(&gWindowTemplate_81E6E88); } static void NamingScreen_ResetObjects(void) @@ -1610,7 +1610,7 @@ static void DisplaySentToPCMessage(void) { StringCopy(gStringVar1, namingScreenDataPtr->destBuffer); StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC); - BasicInitMenuWindow(&gWindowConfig_81E6E88); + BasicInitMenuWindow(&gWindowTemplate_81E6E88); Menu_DisplayDialogueFrame(); MenuPrintMessageDefaultCoords(gStringVar4); } @@ -1760,16 +1760,16 @@ static void (*const gUnknown_083CE310[][2])(void) = static const struct WindowTemplate *const gUnknown_083CE328[][2][2] = { { - {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8}, - {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0}, + {&gWindowTemplate_81E6EDC, &gWindowTemplate_81E6EF8}, + {&gWindowTemplate_81E6EA4, &gWindowTemplate_81E6EC0}, }, { - {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0}, - {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30}, + {&gWindowTemplate_81E6EA4, &gWindowTemplate_81E6EC0}, + {&gWindowTemplate_81E6F14, &gWindowTemplate_81E6F30}, }, { - {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30}, - {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8}, + {&gWindowTemplate_81E6F14, &gWindowTemplate_81E6F30}, + {&gWindowTemplate_81E6EDC, &gWindowTemplate_81E6EF8}, }, }; @@ -1843,7 +1843,7 @@ static void PrintKeyboardCharacters(u8 page) //print letters on page static void sub_80B78A8(void) { - BasicInitMenuWindow(&gWindowConfig_81E6F4C); + BasicInitMenuWindow(&gWindowTemplate_81E6F4C); gUnknown_083CE358[namingScreenDataPtr->templateNum](); gUnknown_083CE368[namingScreenDataPtr->template->unk3](); Menu_PrintText(namingScreenDataPtr->template->title, 9, 2); @@ -1886,7 +1886,7 @@ static void sub_80B7960(void) string[5] = 1; string += 6; StringCopy(string, namingScreenDataPtr->textBuffer); - BasicInitMenuWindow(&gWindowConfig_81E6F4C); + BasicInitMenuWindow(&gWindowTemplate_81E6F4C); Menu_PrintText(gStringVar1, namingScreenDataPtr->unk2, 4); } diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index f35ed5b5a..2b9412e45 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -116,11 +116,11 @@ void CB2_InitOptionMenu(void) gMain.state++; break; case 2: - SetUpWindowConfig(&gWindowConfig_81E71B4); + SetUpWindowConfig(&gWindowTemplate_81E71B4); gMain.state++; break; case 3: - MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E71B4); gMain.state++; break; case 4: diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index eb823b84b..37b1c767e 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -443,8 +443,8 @@ void CB2_InitResetRtcScreen(void) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); REG_DISPCNT = 4352; SetVBlankCallback(VBlankCB_ResetRtcScreen); SetMainCallback2(CB2_ResetRtcScreen); diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index a4642d241..4609f3fd8 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -120,8 +120,8 @@ static void CB2_SaveFailedScreen(void) ResetPaletteFade(); LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_DrawStdWindowFrame(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // message window Menu_PrintText(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); diff --git a/src/engine/text.c b/src/engine/text.c index 2d6d95877..15a535ff0 100644 --- a/src/engine/text.c +++ b/src/engine/text.c @@ -492,7 +492,7 @@ static const ShiftGlyphTileShadowedFunc sShiftGlyphTileShadowedFuncs[] = ShiftGlyphTile_ShadowedFont_Width8, }; -const struct WindowTemplate gWindowConfig_81E6C3C = +const struct WindowTemplate gWindowTemplate_81E6C3C = { 0, // BG number 2, // BG character base block @@ -513,7 +513,7 @@ const struct WindowTemplate gWindowConfig_81E6C3C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6C58 = +const struct WindowTemplate gWindowTemplate_81E6C58 = { 0, // BG number 0, // BG character base block @@ -534,7 +534,7 @@ const struct WindowTemplate gWindowConfig_81E6C58 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6C74 = +const struct WindowTemplate gWindowTemplate_81E6C74 = { 0, // BG number 0, // BG character base block @@ -555,7 +555,7 @@ const struct WindowTemplate gWindowConfig_81E6C74 = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E6C90 = +const struct WindowTemplate gWindowTemplate_81E6C90 = { 0, // BG number 1, // BG character base block @@ -576,7 +576,7 @@ const struct WindowTemplate gWindowConfig_81E6C90 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6CAC = +const struct WindowTemplate gWindowTemplate_81E6CAC = { 0, // BG number 0, // BG character base block @@ -597,7 +597,7 @@ const struct WindowTemplate gWindowConfig_81E6CAC = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E6CC8 = +const struct WindowTemplate gWindowTemplate_81E6CC8 = { 2, // BG number 2, // BG character base block @@ -618,7 +618,7 @@ const struct WindowTemplate gWindowConfig_81E6CC8 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6CE4 = +const struct WindowTemplate gWindowTemplate_81E6CE4 = { 0, // BG number 2, // BG character base block @@ -639,7 +639,7 @@ const struct WindowTemplate gWindowConfig_81E6CE4 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D00 = +const struct WindowTemplate gWindowTemplate_81E6D00 = { 0, // BG number 0, // BG character base block @@ -660,7 +660,7 @@ const struct WindowTemplate gWindowConfig_81E6D00 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D1C = +const struct WindowTemplate gWindowTemplate_81E6D1C = { 1, // BG number 0, // BG character base block @@ -681,7 +681,7 @@ const struct WindowTemplate gWindowConfig_81E6D1C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D38 = +const struct WindowTemplate gWindowTemplate_81E6D38 = { 0, // BG number 0, // BG character base block @@ -702,7 +702,7 @@ const struct WindowTemplate gWindowConfig_81E6D38 = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D54 = +const struct WindowTemplate gWindowTemplate_81E6D54 = { 3, // BG number 3, // BG character base block @@ -723,7 +723,7 @@ const struct WindowTemplate gWindowConfig_81E6D54 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D70 = +const struct WindowTemplate gWindowTemplate_81E6D70 = { 3, // BG number 3, // BG character base block @@ -744,7 +744,7 @@ const struct WindowTemplate gWindowConfig_81E6D70 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D8C = +const struct WindowTemplate gWindowTemplate_81E6D8C = { 1, // BG number 0, // BG character base block @@ -765,7 +765,7 @@ const struct WindowTemplate gWindowConfig_81E6D8C = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6DA8 = +const struct WindowTemplate gWindowTemplate_81E6DA8 = { 0, // BG number 0, // BG character base block @@ -828,7 +828,7 @@ const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6DFC = +const struct WindowTemplate gWindowTemplate_81E6DFC = { 0, // BG number 2, // BG character base block @@ -849,7 +849,7 @@ const struct WindowTemplate gWindowConfig_81E6DFC = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E18 = +const struct WindowTemplate gWindowTemplate_81E6E18 = { 0, // BG number 2, // BG character base block @@ -870,7 +870,7 @@ const struct WindowTemplate gWindowConfig_81E6E18 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E34 = +const struct WindowTemplate gWindowTemplate_81E6E34 = { 1, // BG number 0, // BG character base block @@ -891,7 +891,7 @@ const struct WindowTemplate gWindowConfig_81E6E34 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E50 = +const struct WindowTemplate gWindowTemplate_81E6E50 = { 0, // BG number 2, // BG character base block @@ -912,7 +912,7 @@ const struct WindowTemplate gWindowConfig_81E6E50 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E6C = +const struct WindowTemplate gWindowTemplate_81E6E6C = { 0, // BG number 2, // BG character base block @@ -933,7 +933,7 @@ const struct WindowTemplate gWindowConfig_81E6E6C = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E88 = +const struct WindowTemplate gWindowTemplate_81E6E88 = { 0, // BG number 0, // BG character base block @@ -954,7 +954,7 @@ const struct WindowTemplate gWindowConfig_81E6E88 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6EA4 = +const struct WindowTemplate gWindowTemplate_81E6EA4 = { 1, // BG number 0, // BG character base block @@ -975,7 +975,7 @@ const struct WindowTemplate gWindowConfig_81E6EA4 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6EC0 = +const struct WindowTemplate gWindowTemplate_81E6EC0 = { 2, // BG number 2, // BG character base block @@ -996,7 +996,7 @@ const struct WindowTemplate gWindowConfig_81E6EC0 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6EDC = +const struct WindowTemplate gWindowTemplate_81E6EDC = { 1, // BG number 0, // BG character base block @@ -1017,7 +1017,7 @@ const struct WindowTemplate gWindowConfig_81E6EDC = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6EF8 = +const struct WindowTemplate gWindowTemplate_81E6EF8 = { 2, // BG number 2, // BG character base block @@ -1038,7 +1038,7 @@ const struct WindowTemplate gWindowConfig_81E6EF8 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F14 = +const struct WindowTemplate gWindowTemplate_81E6F14 = { 1, // BG number 0, // BG character base block @@ -1059,7 +1059,7 @@ const struct WindowTemplate gWindowConfig_81E6F14 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F30 = +const struct WindowTemplate gWindowTemplate_81E6F30 = { 2, // BG number 2, // BG character base block @@ -1080,7 +1080,7 @@ const struct WindowTemplate gWindowConfig_81E6F30 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F4C = +const struct WindowTemplate gWindowTemplate_81E6F4C = { 3, // BG number 0, // BG character base block @@ -1101,7 +1101,7 @@ const struct WindowTemplate gWindowConfig_81E6F4C = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F68 = +const struct WindowTemplate gWindowTemplate_81E6F68 = { 0, // BG number 2, // BG character base block @@ -1122,7 +1122,7 @@ const struct WindowTemplate gWindowConfig_81E6F68 = BG_SCREEN_ADDR(13), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F84 = +const struct WindowTemplate gWindowTemplate_81E6F84 = { 0, // BG number 2, // BG character base block @@ -1143,7 +1143,7 @@ const struct WindowTemplate gWindowConfig_81E6F84 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6FA0 = +const struct WindowTemplate gWindowTemplate_81E6FA0 = { 1, // BG number 0, // BG character base block @@ -1164,7 +1164,7 @@ const struct WindowTemplate gWindowConfig_81E6FA0 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6FBC = +const struct WindowTemplate gWindowTemplate_81E6FBC = { 0, // BG number 0, // BG character base block @@ -1185,7 +1185,7 @@ const struct WindowTemplate gWindowConfig_81E6FBC = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6FD8 = +const struct WindowTemplate gWindowTemplate_81E6FD8 = { 0, // BG number 0, // BG character base block @@ -1206,7 +1206,7 @@ const struct WindowTemplate gWindowConfig_81E6FD8 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6FF4 = +const struct WindowTemplate gWindowTemplate_81E6FF4 = { 0, // BG number 0, // BG character base block @@ -1227,7 +1227,7 @@ const struct WindowTemplate gWindowConfig_81E6FF4 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7010 = +const struct WindowTemplate gWindowTemplate_81E7010 = { 0, // BG number 0, // BG character base block @@ -1248,7 +1248,7 @@ const struct WindowTemplate gWindowConfig_81E7010 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E702C = +const struct WindowTemplate gWindowTemplate_81E702C = { 3, // BG number 2, // BG character base block @@ -1269,7 +1269,7 @@ const struct WindowTemplate gWindowConfig_81E702C = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7048 = +const struct WindowTemplate gWindowTemplate_81E7048 = { 2, // BG number 2, // BG character base block @@ -1290,7 +1290,7 @@ const struct WindowTemplate gWindowConfig_81E7048 = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7064 = +const struct WindowTemplate gWindowTemplate_81E7064 = { 2, // BG number 2, // BG character base block @@ -1311,7 +1311,7 @@ const struct WindowTemplate gWindowConfig_81E7064 = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7080 = +const struct WindowTemplate gWindowTemplate_81E7080 = { 3, // BG number 0, // BG character base block @@ -1332,7 +1332,7 @@ const struct WindowTemplate gWindowConfig_81E7080 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E709C = +const struct WindowTemplate gWindowTemplate_81E709C = { 0, // BG number 0, // BG character base block @@ -1353,7 +1353,7 @@ const struct WindowTemplate gWindowConfig_81E709C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E70B8 = +const struct WindowTemplate gWindowTemplate_81E70B8 = { 2, // BG number 0, // BG character base block @@ -1374,7 +1374,7 @@ const struct WindowTemplate gWindowConfig_81E70B8 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E70D4 = +const struct WindowTemplate gWindowTemplate_81E70D4 = { 3, // BG number 0, // BG character base block @@ -1395,7 +1395,7 @@ const struct WindowTemplate gWindowConfig_81E70D4 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E70F0 = +const struct WindowTemplate gWindowTemplate_81E70F0 = { 0, // BG number 0, // BG character base block @@ -1416,7 +1416,7 @@ const struct WindowTemplate gWindowConfig_81E70F0 = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E710C = +const struct WindowTemplate gWindowTemplate_81E710C = { 0, // BG number 0, // BG character base block @@ -1437,7 +1437,7 @@ const struct WindowTemplate gWindowConfig_81E710C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7128 = +const struct WindowTemplate gWindowTemplate_81E7128 = { 0, // BG number 2, // BG character base block @@ -1458,7 +1458,7 @@ const struct WindowTemplate gWindowConfig_81E7128 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7144 = +const struct WindowTemplate gWindowTemplate_81E7144 = { 0, // BG number 2, // BG character base block @@ -1479,7 +1479,7 @@ const struct WindowTemplate gWindowConfig_81E7144 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7160 = +const struct WindowTemplate gWindowTemplate_81E7160 = { 1, // BG number 1, // BG character base block @@ -1500,7 +1500,7 @@ const struct WindowTemplate gWindowConfig_81E7160 = BG_SCREEN_ADDR(10), // tilemap }; -const struct WindowTemplate gWindowConfig_81E717C = +const struct WindowTemplate gWindowTemplate_81E717C = { 0, // BG number 3, // BG character base block @@ -1521,7 +1521,7 @@ const struct WindowTemplate gWindowConfig_81E717C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7198 = +const struct WindowTemplate gWindowTemplate_81E7198 = { 0, // BG number 2, // BG character base block @@ -1542,7 +1542,7 @@ const struct WindowTemplate gWindowConfig_81E7198 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E71B4 = +const struct WindowTemplate gWindowTemplate_81E71B4 = { 0, // BG number 2, // BG character base block @@ -1563,7 +1563,7 @@ const struct WindowTemplate gWindowConfig_81E71B4 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E71D0 = +const struct WindowTemplate gWindowTemplate_81E71D0 = { 1, // BG number 1, // BG character base block @@ -1584,7 +1584,7 @@ const struct WindowTemplate gWindowConfig_81E71D0 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E71EC = +const struct WindowTemplate gWindowTemplate_81E71EC = { 2, // BG number 1, // BG character base block @@ -1605,7 +1605,7 @@ const struct WindowTemplate gWindowConfig_81E71EC = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7208 = +const struct WindowTemplate gWindowTemplate_81E7208 = { 0, // BG number 2, // BG character base block @@ -1626,7 +1626,7 @@ const struct WindowTemplate gWindowConfig_81E7208 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7224 = +const struct WindowTemplate gWindowTemplate_81E7224 = { 0, // BG number 0, // BG character base block @@ -1647,7 +1647,7 @@ const struct WindowTemplate gWindowConfig_81E7224 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7240 = +const struct WindowTemplate gWindowTemplate_81E7240 = { 1, // BG number 2, // BG character base block @@ -1668,7 +1668,7 @@ const struct WindowTemplate gWindowConfig_81E7240 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E725C = +const struct WindowTemplate gWindowTemplate_81E725C = { 0, // BG number 0, // BG character base block @@ -1689,7 +1689,7 @@ const struct WindowTemplate gWindowConfig_81E725C = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E7278 = +const struct WindowTemplate gWindowTemplate_81E7278 = { 0, // BG number 0, // BG character base block @@ -1710,7 +1710,7 @@ const struct WindowTemplate gWindowConfig_81E7278 = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E7294 = +const struct WindowTemplate gWindowTemplate_81E7294 = { 0, // BG number 0, // BG character base block @@ -2364,24 +2364,24 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to void sub_80034D4(u8 *tileData, const u8 *text) { - sub_8004E3C(&gWindowConfig_81E6C74, tileData, text); + sub_8004E3C(&gWindowTemplate_81E6C74, tileData, text); } u8 sub_80034EC(u8 *str) { - return Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowConfig_81E6C74, str); + return Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowTemplate_81E6C74, str); } u8 *sub_8003504(u8 *dest, s32 value, u8 alignAmount, u8 alignType) { - sTempWindow.template = (struct WindowTemplate *)&gWindowConfig_81E6C74; + sTempWindow.template = (struct WindowTemplate *)&gWindowTemplate_81E6C74; Text_InitWindow(&sTempWindow, 0, 0, 0, 0); return AlignInt2(&sTempWindow, dest, value, alignAmount, alignType); } u8 *sub_8003558(u8 *dest, const u8 *src, u8 alignAmount, u8 alignType) { - sTempWindow.template = (struct WindowTemplate *)&gWindowConfig_81E6C74; + sTempWindow.template = (struct WindowTemplate *)&gWindowTemplate_81E6C74; Text_InitWindow(&sTempWindow, src, 0, 0, 0); return AlignString(&sTempWindow, dest, src, alignAmount, alignType); } diff --git a/src/engine/trade.c b/src/engine/trade.c index d37b36f72..30e22b8d5 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1016,10 +1016,10 @@ void sub_8047CD8(void) static void sub_8047CE8(void) { u8 mpId; - sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[0], gSaveBlock2.playerName, 0xC); + sub_804AFB8(&gWindowTemplate_81E725C, gUnknown_020296CC[0], gSaveBlock2.playerName, 0xC); mpId = GetMultiplayerId(); - sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[3], gLinkPlayers[mpId ^ 1].name, 0xC); - sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[6], gUnknown_0820C14C[0], 0x8); + sub_804AFB8(&gWindowTemplate_81E725C, gUnknown_020296CC[3], gLinkPlayers[mpId ^ 1].name, 0xC); + sub_804AFB8(&gWindowTemplate_81E725C, gUnknown_020296CC[6], gUnknown_0820C14C[0], 0x8); sub_804ACD8(gUnknown_0820C14C[1], gUnknown_020296CC[8], 0x14); nullsub_5(3, 0); } @@ -1087,9 +1087,9 @@ static void sub_8047EC0(void) ResetTasks(); sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); - InitMenuWindow(&gWindowConfig_81E6CE4); - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + InitMenuWindow(&gWindowTemplate_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); Menu_EraseScreen(); @@ -1267,9 +1267,9 @@ static void sub_80484F4(void) ResetTasks(); sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); - InitMenuWindow(&gWindowConfig_81E6CE4); - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + InitMenuWindow(&gWindowTemplate_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); Menu_EraseScreen(); @@ -3010,7 +3010,7 @@ u8 sub_804A2B4(u8 *a0, u8 whichParty, u8 whichPokemon) GetMonGender(&gEnemyParty[whichPokemon]); GetMonData(&gEnemyParty[whichPokemon], MON_DATA_LEVEL); } - return Text_GetStringWidthFromWindowTemplate(&gWindowConfig_81E7294, a0); + return Text_GetStringWidthFromWindowTemplate(&gWindowTemplate_81E7294, a0); } #ifdef NONMATCHING @@ -3067,7 +3067,7 @@ static void sub_804A41C(u8 whichParty) GetMonData(pokemon, MON_DATA_NICKNAME, nickname); StringCopy10(string + 6, nickname); GetMonGender(pokemon); - string[5] = (50 - Text_GetStringWidthFromWindowTemplate(&gWindowConfig_81E7294, string + 6)) / 2; + string[5] = (50 - Text_GetStringWidthFromWindowTemplate(&gWindowTemplate_81E7294, string + 6)) / 2; Text_InitWindowAndPrintText(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]); } } @@ -3141,7 +3141,7 @@ static void sub_804A41C(u8 whichParty) "\tbl GetMonGender\n" "\tmov r1, sp\n" "\tadds r1, 0x22\n" - "\tldr r0, _0804A518 @ =gWindowConfig_81E7294\n" + "\tldr r0, _0804A518 @ =gWindowTemplate_81E7294\n" "\tbl Text_GetStringWidthFromWindowTemplate\n" "\tlsls r0, 24\n" "\tlsrs r0, 24\n" @@ -3198,7 +3198,7 @@ static void sub_804A41C(u8 whichParty) "\tbx r0\n" "\t.align 2, 0\n" "_0804A514: .4byte gEnemyParty\n" - "_0804A518: .4byte gWindowConfig_81E7294"); + "_0804A518: .4byte gWindowTemplate_81E7294"); } #endif @@ -3523,7 +3523,7 @@ static bool8 sub_804ABF8(void) static void sub_804ACD8(const u8 *src, u8 *dest, u8 a2) { - sub_804AFB8(&gWindowConfig_81E725C, dest, src, a2); + sub_804AFB8(&gWindowTemplate_81E725C, dest, src, a2); } #ifdef NONMATCHING @@ -4028,8 +4028,8 @@ static void sub_804B41C(void) FreeAllSpritePalettes(); SetVBlankCallback(sub_804B210); sub_804B228(); - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); Menu_EraseScreen(); @@ -4182,7 +4182,7 @@ static __attribute__((naked)) void sub_804B41C(void) "\tldr r0, _0804B578 @ =sub_804B210\n" "\tbl SetVBlankCallback\n" "\tbl sub_804B228\n" - "\tldr r4, _0804B57C @ =gWindowConfig_81E6F84\n" + "\tldr r4, _0804B57C @ =gWindowTemplate_81E6F84\n" "\tadds r0, r4, 0\n" "\tbl SetUpWindowConfig\n" "\tldr r0, [r6]\n" @@ -4279,7 +4279,7 @@ static __attribute__((naked)) void sub_804B41C(void) "_0804B570: .4byte gUnknown_03004828\n" "_0804B574: .4byte gSharedMem + 0x1F000\n" "_0804B578: .4byte sub_804B210\n" - "_0804B57C: .4byte gWindowConfig_81E6F84\n" + "_0804B57C: .4byte gWindowTemplate_81E6F84\n" "_0804B580: .4byte gLinkType\n" "_0804B584: .4byte 0x00001144\n" "_0804B588: .4byte gMain\n" @@ -4531,8 +4531,8 @@ static void sub_804B790(void) FreeAllSpritePalettes(); SetVBlankCallback(sub_804B210); sub_804B228(); - SetUpWindowConfig(&gWindowConfig_81E717C); - Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E717C); + SetUpWindowConfig(&gWindowTemplate_81E717C); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E717C); gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); Menu_EraseScreen(); diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index f57face11..75e481f84 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -109,11 +109,11 @@ static bool8 sub_8146058(void) gMain.state += 1; break; case 3: - SetUpWindowConfig(&gWindowConfig_81E6E18); + SetUpWindowConfig(&gWindowTemplate_81E6E18); gMain.state += 1; break; case 4: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E18); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E18); gMain.state += 1; break; case 5: diff --git a/src/field/diploma.c b/src/field/diploma.c index b9cdb65df..8481589cb 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -68,8 +68,8 @@ void CB2_ShowDiploma(void) ResetPaletteFade(); FreeAllSpritePalettes(); LoadPalette(gDiplomaPalettes, 0, 64); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); DisplayDiplomaText(); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 1e2aaa4ed..57d9072b1 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -2434,8 +2434,8 @@ void sub_8088380(struct Task *task) IntrCallback callback; LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback); SetVBlankCallback(callback); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); DestroyTask(FindTaskIdByFunc(sub_8088120)); @@ -2557,8 +2557,8 @@ void sub_808862C(struct Task *task) CpuFill32(0, (void *)VRAM + bg0cnt, 0x800); LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback); SetVBlankCallback(intrCallback); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); DestroyTask(FindTaskIdByFunc(sub_808847C)); diff --git a/src/field/field_message_box.c b/src/field/field_message_box.c index 284fdb3f0..5eec7a14b 100644 --- a/src/field/field_message_box.c +++ b/src/field/field_message_box.c @@ -20,7 +20,7 @@ void InitFieldMessageBox(void) { sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); - Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gWindowConfig_81E6CE4); + Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gWindowTemplate_81E6CE4); } static void Task_FieldMessageBox(u8 taskId) diff --git a/src/field/field_region_map.c b/src/field/field_region_map.c index af8e4ec8a..afbc25226 100644 --- a/src/field/field_region_map.c +++ b/src/field/field_region_map.c @@ -50,8 +50,8 @@ void CB2_FieldInitRegionMap(void) InitRegionMap((void *)&ewram0_5.unk8, 0); CreateRegionMapPlayerIcon(0, 0); CreateRegionMapCursor(1, 1); - SetUpWindowConfig(&gWindowConfig_81E709C); - InitMenuWindow(&gWindowConfig_81E709C); + SetUpWindowConfig(&gWindowTemplate_81E709C); + InitMenuWindow(&gWindowTemplate_81E709C); Menu_EraseScreen(); REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; Menu_DrawStdWindowFrame(21, 0, 29, 3); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index f123768e5..6e818ce68 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -265,7 +265,7 @@ static void sub_80816A8(u8 taskId) break; case 5: Menu_EraseWindowRect(0, 0, 29, 19); - LoadFontDefaultPalette(&gWindowConfig_81E6CE4); + LoadFontDefaultPalette(&gWindowTemplate_81E6CE4); REG_WIN0H = 255; REG_DISPCNT = data[6]; REG_BLDCNT = data[7]; diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 0db48f55d..f58f42fb9 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -424,11 +424,11 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 7: - SetUpWindowConfig(&gWindowConfig_81E6DFC); + SetUpWindowConfig(&gWindowTemplate_81E6DFC); gMain.state++; break; case 8: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6DFC); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6DFC); gMain.state++; break; case 9: diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 82c6dffe3..c3a73e18b 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -858,7 +858,7 @@ static void Task_BardSong(u8 taskId) { case 0: // Initialize song PrepareSongText(); - Text_InitWindowWithTemplate(gMenuWindowPtr, &gWindowConfig_81E6CE4); + Text_InitWindowWithTemplate(gMenuWindowPtr, &gWindowTemplate_81E6CE4); Text_InitWindow8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); task->data[1] = 0; task->data[2] = 0; diff --git a/src/field/overworld.c b/src/field/overworld.c index e239daec7..e91c8ae56 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1456,8 +1456,8 @@ bool32 sub_805483C(u8 *a1) case 4: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; case 5: @@ -1522,8 +1522,8 @@ bool32 sub_805493C(u8 *a1, u32 a2) case 4: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; case 5: @@ -1612,8 +1612,8 @@ bool32 sub_8054A9C(u8 *a1) case 3: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; case 4: @@ -1695,8 +1695,8 @@ void sub_8054C2C(void) { sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); mapdata_load_assets_to_gpu_and_full_redraw(); } diff --git a/src/field/party_menu.c b/src/field/party_menu.c index f589494f4..73a32d070 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -679,11 +679,11 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 7: - SetUpWindowConfig(&gWindowConfig_81E6C90); + SetUpWindowConfig(&gWindowTemplate_81E6C90); gMain.state++; break; case 8: - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C90); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C90); MultistepInitWindowTileData(&gUnknown_03004210, 1); gMain.state++; break; @@ -716,7 +716,7 @@ bool8 InitPartyMenu(void) } break; case 13: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6CC8); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6CC8); gMain.state++; break; case 14: @@ -3313,7 +3313,7 @@ void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer) { u32 var1 = 0; CpuFastSet(&var1, gTileBuffer, 0x1000100); - sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer); + sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBuffer, nameBuffer); CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128); } @@ -3423,7 +3423,7 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level) var1 = 0; CpuFastSet(&var1, gUnknown_02039460, 0x1000020); - sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32); } @@ -3517,7 +3517,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) var = 0; CpuFastSet(&var, gUnknown_02039460, 0x1000040); - sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64); } diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 3ca359ef7..b238857fa 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -275,15 +275,15 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 5: - SetUpWindowConfig(&gWindowConfig_81E6E34); + SetUpWindowConfig(&gWindowTemplate_81E6E34); gMain.state++; break; case 6: - SetUpWindowConfig(&gWindowConfig_81E6E50); + SetUpWindowConfig(&gWindowTemplate_81E6E50); gMain.state++; break; case 7: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E34); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E34); gMain.state++; break; case 8: @@ -293,7 +293,7 @@ static bool8 sub_810B6C0(void) } break; case 9: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E50); gMain.state++; break; case 10: @@ -445,13 +445,13 @@ void debug_sub_8120F98(void) static void sub_810BB0C(void) { - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); sub_8072BD8(ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name, 2, 1, 0x48); } static void sub_810BB30(void) { - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); Menu_PrintText(gContestStatsText_Spicy, 2, 13); Menu_PrintText(gContestStatsText_Dry, 2, 15); Menu_PrintText(gContestStatsText_Sweet, 2, 17); @@ -464,7 +464,7 @@ static void sub_810BB88(u8 a0) u8 i; u8 y; u8 *buf; - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); for (i=a0; i<=a0+8; i++) { y = (i - a0) << 1; @@ -596,7 +596,7 @@ static void sub_810BDAC(bool8 flag) gBGTilemapBuffers[2][v0 + 32] = 15; } } - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1); @@ -812,7 +812,7 @@ static void sub_810C368(u8 taskId) v0 = 2; sub_80F98A4(0); sub_80F98A4(1); - BasicInitMenuWindow(&gWindowConfig_81E6E50); + BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_DrawStdWindowFrame(7, v0 + 4, 13, 11); PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); @@ -868,7 +868,7 @@ static void sub_810C508(u8 taskId) static void sub_810C540(u8 taskId) { - BasicInitMenuWindow(&gWindowConfig_81E6E50); + BasicInitMenuWindow(&gWindowTemplate_81E6E50); HandleDestroyMenuCursors(); Menu_EraseWindowRect(7, 4, 13, 11); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]); @@ -906,7 +906,7 @@ static void sub_810C668(u8 taskId) { sub_80F979C(1, 0); } - BasicInitMenuWindow(&gWindowConfig_81E6E50); + BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_EraseWindowRect(7, 6, 13, 11); Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_810BF7C; @@ -922,7 +922,7 @@ static void sub_810C6DC(u8 taskId) static void sub_810C704(u8 taskId) { - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); sub_810BC84(gUnknown_02039248.unk1); sub_80F979C(1, 1); gTasks[taskId].func = sub_810C6DC; diff --git a/src/field/region_map.c b/src/field/region_map.c index 1eb57b803..f7db0a61e 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1540,10 +1540,10 @@ void CB2_InitFlyRegionMap(void) FreeAllSpritePalettes(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7224); + SetUpWindowConfig(&gWindowTemplate_81E7224); break; case 2: - InitMenuWindow(&gWindowConfig_81E7224); + InitMenuWindow(&gWindowTemplate_81E7224); Menu_EraseScreen(); break; case 3: diff --git a/src/field/script_menu.c b/src/field/script_menu.c index bf6e93e41..ee5843049 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -622,7 +622,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ig static u16 GetStringWidthInTilesForScriptMenu(const u8 *str) { // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. - return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowConfig_81E6CE4, str) + 7) / 8; + return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowTemplate_81E6CE4, str) + 7) / 8; } static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos) diff --git a/src/field/shop.c b/src/field/shop.c index 0d8bc83d1..cfd4818dc 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -285,8 +285,8 @@ void BuyMenuDrawGraphics(void) ResetPaletteFade(); ResetSpriteData(); ResetTasks(); - SetUpWindowConfig(&gWindowConfig_81E6DFC); - InitMenuWindow(&gWindowConfig_81E6DFC); + SetUpWindowConfig(&gWindowTemplate_81E6DFC); + InitMenuWindow(&gWindowTemplate_81E6DFC); BuyMenuDrawMapGraphics(); gMartInfo.cursor = zero; gMartInfo.choicesAbove = zero2; diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 3c13e004c..abf837daa 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -400,8 +400,8 @@ static void SlotMachineSetup_0_1(void) static void SlotMachineSetup_3_0(void) { - SetUpWindowConfig(&gWindowConfig_81E7128); - InitMenuWindow(&gWindowConfig_81E7128); + SetUpWindowConfig(&gWindowTemplate_81E7128); + InitMenuWindow(&gWindowTemplate_81E7128); } static void SlotMachineSetup_4_0(void) @@ -2807,7 +2807,7 @@ static void sub_8104B80(struct Task *task) { sub_8104DA4(); sub_81065DC(); - BasicInitMenuWindow(&gWindowConfig_81E7144); + BasicInitMenuWindow(&gWindowTemplate_81E7144); MenuPrint_PixelCoords(gOtherText_ReelTime, 10, 32, 1); BeginNormalPaletteFade(-1, 0, 16, 0, 0); task->data[0]++; @@ -2825,7 +2825,7 @@ static void sub_8104BC8(struct Task *task) static void sub_8104BFC(struct Task *task) { Menu_EraseScreen(); - BasicInitMenuWindow(&gWindowConfig_81E7128); + BasicInitMenuWindow(&gWindowTemplate_81E7128); sub_81064B8(); sub_8104CAC(task->data[1]); sub_810423C(eSlotMachine->pikaPower); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 6c2812039..8131e2511 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -271,7 +271,7 @@ void CreateStartMenuTask(void (*func)(u8)) { u8 taskId; - InitMenuWindow(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); taskId = CreateTask(Task_StartMenu, 0x50); SetTaskFuncWithFollowupFunc(taskId, Task_StartMenu, func); } @@ -774,8 +774,8 @@ static bool32 sub_80719FC(u8 *step) dp12_8087EA4(); break; case 2: - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; break; case 3: diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index d4994d701..9b644c6cb 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -294,8 +294,8 @@ void CB2_ChooseStarter(void) LoadCompressedObjectPic(&gUnknown_083F7794[0]); LoadCompressedObjectPic(&gUnknown_083F77A4[0]); LoadSpritePalettes(gUnknown_083F77B4); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); savedIme = REG_IME; diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 6e71011b9..a4a36e40a 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -228,11 +228,11 @@ static void sub_8136294(void) gUnknown_02039304->unk50++; break; case 3: - SetUpWindowConfig(&gWindowConfig_81E7080); + SetUpWindowConfig(&gWindowTemplate_81E7080); gUnknown_02039304->unk50++; break; case 4: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7080); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E7080); gUnknown_02039304->unk50++; break; case 5: @@ -610,7 +610,7 @@ static void sub_8136BB8(void) GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer); StringGetEnd10(gUnknown_02039304->stringBuffer); StringAppend(gUnknown_02039304->stringBuffer, gOtherText_GetsAPokeBlock); - BasicInitMenuWindow(&gWindowConfig_81E709C); + BasicInitMenuWindow(&gWindowTemplate_81E709C); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(gUnknown_02039304->stringBuffer, 1, 17); DisplayYesNoMenu(23, 10, 1); @@ -623,14 +623,14 @@ static s8 sub_8136C40(void) if ((u8)(retval + 1) < 3) { Menu_EraseScreen(); - BasicInitMenuWindow(&gWindowConfig_81E7080); + BasicInitMenuWindow(&gWindowTemplate_81E7080); } return retval; } static void sub_8136C6C(void) { - BasicInitMenuWindow(&gWindowConfig_81E709C); + BasicInitMenuWindow(&gWindowTemplate_81E709C); Menu_DrawStdWindowFrame(0, 16, 29, 19); for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); if (gUnknown_02039304->unk53 < 5) @@ -667,7 +667,7 @@ static bool8 sub_8136D00(void) static void sub_8136D60(void) { - BasicInitMenuWindow(&gWindowConfig_81E709C); + BasicInitMenuWindow(&gWindowTemplate_81E709C); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(gOtherText_WontEat, 1, 17); } @@ -675,7 +675,7 @@ static void sub_8136D60(void) static void sub_8136D8C(void) { Menu_EraseScreen(); - BasicInitMenuWindow(&gWindowConfig_81E7080); + BasicInitMenuWindow(&gWindowTemplate_81E7080); } static void Pokeblock_MenuWindowTextPrint(const u8 *message) diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 6d102715a..8620ad9f0 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -236,8 +236,8 @@ static void LoadWallClockGraphics(void) FreeAllSpritePalettes(); LoadCompressedObjectPic(&gUnknown_083F7A90[0]); LoadSpritePalettes(gUnknown_083F7AA0); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); } static void WallClockInit(void) diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index 83953186b..eae1c0b4e 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -25,8 +25,8 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gTileBuffer[]; -extern const struct WindowTemplate gWindowConfig_81E6CE4; -extern const struct WindowTemplate gWindowConfig_81E7240; +extern const struct WindowTemplate gWindowTemplate_81E6CE4; +extern const struct WindowTemplate gWindowTemplate_81E7240; extern const u8 *const gContestEffectStrings[]; extern const u8 *const gMoveDescriptions[]; extern const u8 gTypeNames[][7]; @@ -268,12 +268,12 @@ void CB2_InitLearnMove(void) sub_8133558(); SetVBlankCallback(VBlankCB_LearnMove); - SetUpWindowConfig(&gWindowConfig_81E7240); - InitMenuWindow(&gWindowConfig_81E7240); + SetUpWindowConfig(&gWindowTemplate_81E7240); + InitMenuWindow(&gWindowTemplate_81E7240); Menu_EraseScreen(); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); REG_BG0VOFS = 0; @@ -302,12 +302,12 @@ void sub_81327A4(void) sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; SetVBlankCallback(VBlankCB_LearnMove); - SetUpWindowConfig(&gWindowConfig_81E7240); - InitMenuWindow(&gWindowConfig_81E7240); + SetUpWindowConfig(&gWindowTemplate_81E7240); + InitMenuWindow(&gWindowTemplate_81E7240); Menu_EraseScreen(); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); REG_DISPCNT = 0x1340; @@ -633,7 +633,7 @@ void DrawLearnMoveMenuWindow(void) { u32 i; - BasicInitMenuWindow(&gWindowConfig_81E7240); + BasicInitMenuWindow(&gWindowTemplate_81E7240); for (i = 0; i < 4; i++) { Menu_DrawStdWindowFrame( @@ -642,7 +642,7 @@ void DrawLearnMoveMenuWindow(void) gUnknown_08402CF8[i][2], gUnknown_08402CF8[i][3]); } - BasicInitMenuWindow(&gWindowConfig_81E6CE4); + BasicInitMenuWindow(&gWindowTemplate_81E6CE4); } void sub_8133030(bool8 a) diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index c49c6d350..cd1083790 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -354,11 +354,11 @@ static u8 sub_80F8A28(void) RETURN_UP_STATE; case 6: - SetUpWindowConfig(&gWindowConfig_81E6DFC); + SetUpWindowConfig(&gWindowTemplate_81E6DFC); RETURN_UP_STATE; case 7: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6DFC); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6DFC); RETURN_UP_STATE; case 8: diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 028ae71a0..2ed404327 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -530,11 +530,11 @@ static bool8 TransitionToPokeblockFeedScene(void) gMain.state++; break; case 4: - SetUpWindowConfig(&gWindowConfig_81E6E50); + SetUpWindowConfig(&gWindowTemplate_81E6E50); gMain.state++; break; case 5: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E50); gMain.state++; break; case 6: diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 83820f4cc..b7081f35d 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1425,8 +1425,8 @@ void CB2_InitPokedex(void) ResetPaletteFade(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; - SetUpWindowConfig(&gWindowConfig_81E7048); - InitMenuWindow(&gWindowConfig_81E7048); + SetUpWindowConfig(&gWindowTemplate_81E7048); + InitMenuWindow(&gWindowTemplate_81E7048); gMain.state++; break; case 2: @@ -1937,8 +1937,8 @@ static bool8 sub_808D344(u8 a) gMain.state++; break; case 2: - SetUpWindowConfig(&gWindowConfig_81E7048); - InitMenuWindow(&gWindowConfig_81E7048); + SetUpWindowConfig(&gWindowTemplate_81E7048); + InitMenuWindow(&gWindowTemplate_81E7048); LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80)); gMain.state++; break; @@ -2951,8 +2951,8 @@ static void Task_InitPageScreenMultistep(u8 taskId) gMain.state++; break; case 3: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); + SetUpWindowConfig(&gWindowTemplate_81E7064); + InitMenuWindow(&gWindowTemplate_81E7064); gMain.state++; break; case 4: @@ -3205,8 +3205,8 @@ static void Task_InitCryScreenMultistep(u8 taskId) gMain.state++; break; case 3: - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); + SetUpWindowConfig(&gWindowTemplate_81E702C); + InitMenuWindow(&gWindowTemplate_81E702C); ResetPaletteFade(); gMain.state++; break; @@ -3394,8 +3394,8 @@ static void Task_InitSizeScreenMultistep(u8 taskId) { u8 string[40]; //I hope this is the correct size - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); + SetUpWindowConfig(&gWindowTemplate_81E702C); + InitMenuWindow(&gWindowTemplate_81E702C); string[0] = EOS; StringAppend(string, gDexText_SizeComparedTo); StringAppend(string, gSaveBlock2.playerName); @@ -3841,8 +3841,8 @@ static void sub_8090750(u8 taskId) gTasks[taskId].data[0]++; break; case 2: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); + SetUpWindowConfig(&gWindowTemplate_81E7064); + InitMenuWindow(&gWindowTemplate_81E7064); DmaClear16(3, (void *)(VRAM + 0xC000), 0x200); gTasks[taskId].data[0]++; break; @@ -4770,8 +4770,8 @@ static void sub_8091E54(u8 taskId) } break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); + SetUpWindowConfig(&gWindowTemplate_81E7064); + InitMenuWindow(&gWindowTemplate_81E7064); LoadCompressedObjectPic(&gUnknown_083A05CC[0]); LoadSpritePalettes(gUnknown_083A05DC); sub_809308C(taskId); diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 0887c6648..e448c9ed3 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -718,11 +718,11 @@ bool8 sub_809DA84(void) gMain.state++; break; case 5: - SetUpWindowConfig(&gWindowConfig_81E6E6C); + SetUpWindowConfig(&gWindowTemplate_81E6E6C); gMain.state++; break; case 6: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E6C); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E6C); gMain.state++; break; case 7: diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 411a20f79..43c9475ca 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -3268,10 +3268,10 @@ bool8 sub_80EF284(u8 a) sub_80EEDE8(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7224); + SetUpWindowConfig(&gWindowTemplate_81E7224); break; case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7224); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224); break; case 3: if (!MultistepInitMenuWindowContinue()) @@ -3660,10 +3660,10 @@ bool8 sub_80EF874(void) sub_80EEDE8(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7224); + SetUpWindowConfig(&gWindowTemplate_81E7224); break; case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7224); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224); break; case 3: if (!MultistepInitMenuWindowContinue()) @@ -3972,10 +3972,10 @@ bool8 sub_80EFF68(void) gUnknown_083DFEC4->unkD162[0] = 11; break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7080); + SetUpWindowConfig(&gWindowTemplate_81E7080); break; case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7080); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E7080); break; case 3: if (!MultistepInitMenuWindowContinue()) @@ -4086,10 +4086,10 @@ bool8 sub_80F02A0(void) gUnknown_083DFEC4->unkD162[0] = 11; break; case 1: - SetUpWindowConfig(&gWindowConfig_81E70D4); + SetUpWindowConfig(&gWindowTemplate_81E70D4); break; case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E70D4); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E70D4); break; case 3: if (!MultistepInitMenuWindowContinue()) @@ -4268,17 +4268,17 @@ _080F0338: .4byte 0x000087ca\n\ _080F033C: .4byte 0x000087c8\n\ _080F0340: .4byte 0x0000d162\n\ _080F0344:\n\ - ldr r0, _080F034C @ =gWindowConfig_81E70D4\n\ + ldr r0, _080F034C @ =gWindowTemplate_81E70D4\n\ bl SetUpWindowConfig\n\ b _080F0618\n\ .align 2, 0\n\ -_080F034C: .4byte gWindowConfig_81E70D4\n\ +_080F034C: .4byte gWindowTemplate_81E70D4\n\ _080F0350:\n\ - ldr r0, _080F0358 @ =gWindowConfig_81E70D4\n\ + ldr r0, _080F0358 @ =gWindowTemplate_81E70D4\n\ bl MultistepInitMenuWindowBegin\n\ b _080F0618\n\ .align 2, 0\n\ -_080F0358: .4byte gWindowConfig_81E70D4\n\ +_080F0358: .4byte gWindowTemplate_81E70D4\n\ _080F035C:\n\ bl MultistepInitMenuWindowContinue\n\ cmp r0, 0\n\ diff --git a/src/roulette.c b/src/roulette.c index 0253a6bb8..950cbdbb1 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -596,8 +596,8 @@ void sub_8115384(void) gMain.state++; break; case 0x2: - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); LoadPalette(&gUnknown_083F86BC, 0x0, 0x1C0); gMain.state++; break; diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index d1ab2d512..32a48fd36 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -215,7 +215,7 @@ extern u8 byte_3002A68; extern const u8 gUnknown_08E6C100[]; extern const u8 gUnknown_08E6C920[]; extern const u8 gUnknown_08E6D354[]; -extern const struct WindowTemplate gWindowConfig_81E6F68; +extern const struct WindowTemplate gWindowTemplate_81E6F68; extern const u8 *const gPokeblockNames[]; extern const struct Berry gBerries[]; @@ -957,8 +957,8 @@ static void sub_804E56C(void) ResetSpriteData(); FreeAllSpritePalettes(); SetVBlankCallback(NULL); - SetUpWindowConfig(&gWindowConfig_81E6F68); - InitMenuWindow(&gWindowConfig_81E6F68); + SetUpWindowConfig(&gWindowTemplate_81E6F68); + InitMenuWindow(&gWindowTemplate_81E6F68); gBerryBlenderData->field_0++; gBerryBlenderData->field_140 = 0; gBerryBlenderData->field_13E = 0; @@ -1135,8 +1135,8 @@ static void sub_804E9F8(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB0_BerryBlender); - SetUpWindowConfig(&gWindowConfig_81E6F68); - InitMenuWindow(&gWindowConfig_81E6F68); + SetUpWindowConfig(&gWindowTemplate_81E6F68); + InitMenuWindow(&gWindowTemplate_81E6F68); gLinkType = 0x4422; gBerryBlenderData->field_0++; gBerryBlenderData->field_4E = 0; @@ -1338,8 +1338,8 @@ static void sub_804F0F4(void) SetVBlankCallback(VBlankCB0_BerryBlender); - SetUpWindowConfig(&gWindowConfig_81E6F68); - InitMenuWindow(&gWindowConfig_81E6F68); + SetUpWindowConfig(&gWindowTemplate_81E6F68); + InitMenuWindow(&gWindowTemplate_81E6F68); gLinkType = 0x4422; @@ -3606,8 +3606,8 @@ void unref_sub_80524BC(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB1_BerryBlender); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); SeedRng(gMain.vblankCounter1); REG_DISPCNT = 0x1540; RunTasks(); diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 442d8ec26..de9063823 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -243,8 +243,8 @@ static void HoldContestPainting(void) static void ContestPaintingInitWindow(u8 arg0) { - InitMenuWindow(&gWindowConfig_81E7160); - SetUpWindowConfig(&gWindowConfig_81E7160); + InitMenuWindow(&gWindowTemplate_81E7160); + SetUpWindowConfig(&gWindowTemplate_81E7160); } static void ContestPaintingPrintCaption(u8 contestType, u8 arg1) diff --git a/src/scene/credits.c b/src/scene/credits.c index 54b517a91..f113fe965 100644 --- a/src/scene/credits.c +++ b/src/scene/credits.c @@ -474,8 +474,8 @@ void sub_81439D0(void) taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; gTasks[taskIdC].data[TDC_0] = 40; - SetUpWindowConfig(&gWindowConfig_81E7208); - InitMenuWindow(&gWindowConfig_81E7208); + SetUpWindowConfig(&gWindowTemplate_81E7208); + InitMenuWindow(&gWindowTemplate_81E7208); LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC)); CpuCopy16(&gUnknown_0840B7FC, (void *)(VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC)); diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index 8d961ad1f..e76f5b47c 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -471,8 +471,8 @@ static void CB2_EggHatch_0(void) gSpecialVar_0x8005 = GetCurrentMapMusic(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gEggHatchData->window, &gWindowConfig_81E6F84); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gEggHatchData->window, &gWindowTemplate_81E6F84); gEggHatchData->tileDataStartOffset = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gEggHatchData->window); gMain.state++; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 323313fc2..571b8ab8d 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -197,7 +197,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, REG_WININ = 0; REG_WINOUT = 0; - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; @@ -209,7 +209,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gUnknown_030041B0 = 256; gUnknown_030041B8 = 0; - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; sub_800D6D4(); @@ -306,7 +306,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) REG_WIN1V = 0; REG_WININ = 0; REG_WINOUT = 0; - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -317,7 +317,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) gUnknown_030041B0 = 256; gUnknown_030041B8 = 0; - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; sub_800D6D4(); @@ -373,8 +373,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gMain.state++; break; case 1: - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); gMain.state++; break; case 2: diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index ae2ff5f87..4f8124ace 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -582,8 +582,8 @@ static void sub_81422B8(u8 taskID) static void sub_81422E8(u8 taskID) { - SetUpWindowConfig(&gWindowConfig_81E7198); - InitMenuWindow(&gWindowConfig_81E7198); + SetUpWindowConfig(&gWindowTemplate_81E7198); + InitMenuWindow(&gWindowTemplate_81E7198); gTasks[taskID].func = sub_8142320; } @@ -714,8 +714,8 @@ static void sub_81426F8(u8 taskID) static void sub_8142738(u8 taskID) { REG_DISPCNT = 0x1940; - SetUpWindowConfig(&gWindowConfig_81E71B4); - InitMenuWindow(&gWindowConfig_81E71B4); + SetUpWindowConfig(&gWindowTemplate_81E71B4); + InitMenuWindow(&gWindowTemplate_81E71B4); gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6); gTasks[taskID].tFrameCount = 120; @@ -864,8 +864,8 @@ static void sub_8142A28(u8 taskID) *(vram1 + i) = i + 3; *(vram2 + i) = i + 20; } - SetUpWindowConfig(&gWindowConfig_81E7198); - InitMenuWindow(&gWindowConfig_81E7198); + SetUpWindowConfig(&gWindowTemplate_81E7198); + InitMenuWindow(&gWindowTemplate_81E7198); gTasks[taskID].func = sub_8142B04; } } @@ -1285,8 +1285,8 @@ static void sub_8143570(void) gReservedSpritePaletteCount = 8; LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); - SetUpWindowConfig(&gWindowConfig_81E71B4); - InitMenuWindow(&gWindowConfig_81E71B4); + SetUpWindowConfig(&gWindowTemplate_81E71B4); + InitMenuWindow(&gWindowTemplate_81E71B4); } static void sub_81435B8(void) -- cgit v1.2.3 From 2dd85b9f853f7d6774faaf52d908961695b3b112 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 9 Jan 2018 01:22:35 -0500 Subject: scrub ld_script for bloat --- include/config.h | 2 +- ld_script.txt | 40 ---------------------------------------- sym_bss.txt | 36 ------------------------------------ 3 files changed, 1 insertion(+), 77 deletions(-) diff --git a/include/config.h b/include/config.h index 796da359c..bd2ad3356 100644 --- a/include/config.h +++ b/include/config.h @@ -14,7 +14,7 @@ // authoritative. These additions are for user convenience based on // officially recommended SDK practices for debugging and is therefore // still in part authoritative. -#define NDEBUG +// #define NDEBUG // To enable print debugging, comment out "#define NDEBUG". This allows // the various AGBPrint functions to be used. (See include/gba/isagbprint.h). diff --git a/ld_script.txt b/ld_script.txt index 1e858cd69..6ae35f8df 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -11,44 +11,6 @@ SECTIONS { { - tools/agbcc/lib/libc.a:memcpy.o(.data); - tools/agbcc/lib/libc.a:memset.o(.data); - tools/agbcc/lib/libc.a:strcmp.o(.data); - tools/agbcc/lib/libc.a:strcpy.o(.data); - tools/agbcc/lib/libc.a:impure.o(.data); - tools/agbcc/lib/libc.a:vsprintf.o(.data); - tools/agbcc/lib/libc.a:vfprintf.o(.data); - tools/agbcc/lib/libc.a:wsetup.o(.data); - tools/agbcc/lib/libc.a:dtoa.o(.data); - tools/agbcc/lib/libc.a:fflush.o(.data); - tools/agbcc/lib/libc.a:findfp.o(.data); - tools/agbcc/lib/libc.a:freer.o(.data); - tools/agbcc/lib/libc.a:mtrim.o(.data); - tools/agbcc/lib/libc.a:fvwrite.o(.data); - tools/agbcc/lib/libc.a:fwalk.o(.data); - tools/agbcc/lib/libc.a:locale.o(.data); - tools/agbcc/lib/libc.a:makebuf.o(.data); - tools/agbcc/lib/libc.a:mallocr.o(.data); - tools/agbcc/lib/libc.a:mbtowc_r.o(.data); - tools/agbcc/lib/libc.a:memchr.o(.data); - tools/agbcc/lib/libc.a:memmove.o(.data); - tools/agbcc/lib/libc.a:mlock.o(.data); - tools/agbcc/lib/libc.a:mprec.o(.data); - tools/agbcc/lib/libc.a:s_isinf.o(.data); - tools/agbcc/lib/libc.a:s_isnan.o(.data); - tools/agbcc/lib/libc.a:sbrkr.o(.data); - tools/agbcc/lib/libc.a:stdio.o(.data); - tools/agbcc/lib/libc.a:strlen.o(.data); - tools/agbcc/lib/libc.a:syscalls.o(.data); - tools/agbcc/lib/libc.a:writer.o(.data); - tools/agbcc/lib/libc.a:callocr.o(.data); - tools/agbcc/lib/libc.a:closer.o(.data); - tools/agbcc/lib/libc.a:errno.o(.data); - tools/agbcc/lib/libc.a:fstatr.o(.data); - tools/agbcc/lib/libc.a:libcfunc.o(.data); - tools/agbcc/lib/libc.a:lseekr.o(.data); - tools/agbcc/lib/libc.a:readr.o(.data); - . = 0x40000; } @@ -62,7 +24,6 @@ SECTIONS { /* .bss.code starts at 0x3000F60 */ src/libs/m4a_2.o(.bss.code); - tools/agbcc/lib/libc.a:syscalls.o(.bss); /* COMMON starts at 0x3001760 */ @@ -1111,7 +1072,6 @@ SECTIONS { tools/agbcc/lib/libgcc.a:_udivdi3.o(.rodata); tools/agbcc/lib/libc.a(.rodata); tools/agbcc/lib/libc.a(.data); - tools/agbcc/lib/libc.a:syscalls.o(.rodata); src/libs/libisagbprn.o(.rodata); } =0 diff --git a/sym_bss.txt b/sym_bss.txt index 6e96a604c..16df5cef2 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -39,40 +39,4 @@ .include "src/libs/siirtc.o" .include "tools/agbcc/lib/libgcc.a:dp-bit.o" .include "tools/agbcc/lib/libgcc.a:fp-bit.o" - .include "tools/agbcc/lib/libc.a:memcpy.o" - .include "tools/agbcc/lib/libc.a:memset.o" - .include "tools/agbcc/lib/libc.a:strcmp.o" - .include "tools/agbcc/lib/libc.a:strcpy.o" - .include "tools/agbcc/lib/libc.a:impure.o" - .include "tools/agbcc/lib/libc.a:vsprintf.o" - .include "tools/agbcc/lib/libc.a:vfprintf.o" - .include "tools/agbcc/lib/libc.a:wsetup.o" - .include "tools/agbcc/lib/libc.a:dtoa.o" - .include "tools/agbcc/lib/libc.a:fflush.o" - .include "tools/agbcc/lib/libc.a:findfp.o" - .include "tools/agbcc/lib/libc.a:freer.o" - .include "tools/agbcc/lib/libc.a:mtrim.o" - .include "tools/agbcc/lib/libc.a:fvwrite.o" - .include "tools/agbcc/lib/libc.a:fwalk.o" - .include "tools/agbcc/lib/libc.a:locale.o" - .include "tools/agbcc/lib/libc.a:makebuf.o" - .include "tools/agbcc/lib/libc.a:mallocr.o" - .include "tools/agbcc/lib/libc.a:mbtowc_r.o" - .include "tools/agbcc/lib/libc.a:memchr.o" - .include "tools/agbcc/lib/libc.a:memmove.o" - .include "tools/agbcc/lib/libc.a:mlock.o" - .include "tools/agbcc/lib/libc.a:mprec.o" - .include "tools/agbcc/lib/libc.a:s_isinf.o" - .include "tools/agbcc/lib/libc.a:s_isnan.o" - .include "tools/agbcc/lib/libc.a:sbrkr.o" - .include "tools/agbcc/lib/libc.a:stdio.o" - .include "tools/agbcc/lib/libc.a:strlen.o" .include "tools/agbcc/lib/libc.a:syscalls.o" - .include "tools/agbcc/lib/libc.a:writer.o" - .include "tools/agbcc/lib/libc.a:callocr.o" - .include "tools/agbcc/lib/libc.a:closer.o" - .include "tools/agbcc/lib/libc.a:errno.o" - .include "tools/agbcc/lib/libc.a:fstatr.o" - .include "tools/agbcc/lib/libc.a:libcfunc.o" - .include "tools/agbcc/lib/libc.a:lseekr.o" - .include "tools/agbcc/lib/libc.a:readr.o" -- cgit v1.2.3 From fc66800520a28a6940cee922b60074da1d624157 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 9 Jan 2018 01:23:11 -0500 Subject: you idiot, leave NDEBUG defined --- include/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/config.h b/include/config.h index bd2ad3356..796da359c 100644 --- a/include/config.h +++ b/include/config.h @@ -14,7 +14,7 @@ // authoritative. These additions are for user convenience based on // officially recommended SDK practices for debugging and is therefore // still in part authoritative. -// #define NDEBUG +#define NDEBUG // To enable print debugging, comment out "#define NDEBUG". This allows // the various AGBPrint functions to be used. (See include/gba/isagbprint.h). -- cgit v1.2.3 From 66bf3cc2bbe16dd2b51bb76b2cae9e15272a6a34 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Tue, 9 Jan 2018 18:43:52 +0100 Subject: Started decompiling bug.s --- asm/bug.s | 552 +++++++++++++++++++++++++------------------------- ld_script.txt | 1 + src/battle/anim/bug.c | 105 ++++++++++ 3 files changed, 382 insertions(+), 276 deletions(-) create mode 100644 src/battle/anim/bug.c diff --git a/asm/bug.s b/asm/bug.s index 83170e9a7..ddd8726db 100755 --- a/asm/bug.s +++ b/asm/bug.s @@ -7,285 +7,285 @@ @ bug - thumb_func_start sub_80DC824 -sub_80DC824: @ 80DC824 - push {r4-r6,lr} - adds r6, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DC850 - adds r0, r6, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080DC84C @ =gBattleAnimArgs - ldrh r1, [r0, 0x4] - negs r1, r1 - strh r1, [r0, 0x4] - ldrh r1, [r0] - negs r1, r1 - strh r1, [r0] - b _080DC880 - .align 2, 0 -_080DC84C: .4byte gBattleAnimArgs -_080DC850: - ldr r0, _080DC8E4 @ =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DC880 - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r1, _080DC8E8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_080DC880: - ldr r5, _080DC8E4 @ =gAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077EE4 - lsls r0, 24 - ldr r4, _080DC8E8 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077EE4 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldrb r0, [r5] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - ldrh r4, [r4, 0x6] - adds r0, r4 - strh r0, [r6, 0x36] - ldr r0, _080DC8EC @ =sub_8078B34 - str r0, [r6, 0x1C] - ldr r1, _080DC8F0 @ =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DC8E4: .4byte gAnimBankTarget -_080DC8E8: .4byte gBattleAnimArgs -_080DC8EC: .4byte sub_8078B34 -_080DC8F0: .4byte DestroyAnimSprite - thumb_func_end sub_80DC824 +# thumb_func_start sub_80DC824 +# sub_80DC824: @ 80DC824 +# push {r4-r6,lr} +# adds r6, r0, 0 +# bl IsContest +# lsls r0, 24 +# cmp r0, 0 +# beq _080DC850 +# adds r0, r6, 0 +# movs r1, 0x2 +# bl StartSpriteAffineAnim +# ldr r0, _080DC84C @ =gBattleAnimArgs +# ldrh r1, [r0, 0x4] +# negs r1, r1 +# strh r1, [r0, 0x4] +# ldrh r1, [r0] +# negs r1, r1 +# strh r1, [r0] +# b _080DC880 +# .align 2, 0 +# _080DC84C: .4byte gBattleAnimArgs +# _080DC850: +# ldr r0, _080DC8E4 @ =gAnimBankTarget +# ldrb r0, [r0] +# bl GetBankSide +# lsls r0, 24 +# cmp r0, 0 +# bne _080DC880 +# adds r0, r6, 0 +# movs r1, 0x1 +# bl StartSpriteAffineAnim +# ldr r1, _080DC8E8 @ =gBattleAnimArgs +# ldrh r0, [r1, 0x2] +# negs r0, r0 +# strh r0, [r1, 0x2] +# ldrh r0, [r1, 0x4] +# negs r0, r0 +# strh r0, [r1, 0x4] +# ldrh r0, [r1, 0x6] +# negs r0, r0 +# strh r0, [r1, 0x6] +# ldrh r0, [r1] +# negs r0, r0 +# strh r0, [r1] +# _080DC880: +# ldr r5, _080DC8E4 @ =gAnimBankTarget +# ldrb r0, [r5] +# movs r1, 0x2 +# bl sub_8077EE4 +# lsls r0, 24 +# ldr r4, _080DC8E8 @ =gBattleAnimArgs +# lsrs r0, 24 +# ldrh r1, [r4] +# adds r0, r1 +# strh r0, [r6, 0x20] +# ldrb r0, [r5] +# movs r1, 0x3 +# bl sub_8077EE4 +# lsls r0, 24 +# lsrs r0, 24 +# ldrh r1, [r4, 0x2] +# adds r0, r1 +# strh r0, [r6, 0x22] +# ldrh r0, [r4, 0x8] +# strh r0, [r6, 0x2E] +# ldrb r0, [r5] +# movs r1, 0x2 +# bl GetBankPosition +# lsls r0, 24 +# lsrs r0, 24 +# ldrh r1, [r4, 0x4] +# adds r0, r1 +# strh r0, [r6, 0x32] +# ldrb r0, [r5] +# movs r1, 0x3 +# bl GetBankPosition +# lsls r0, 24 +# lsrs r0, 24 +# ldrh r4, [r4, 0x6] +# adds r0, r4 +# strh r0, [r6, 0x36] +# ldr r0, _080DC8EC @ =sub_8078B34 +# str r0, [r6, 0x1C] +# ldr r1, _080DC8F0 @ =DestroyAnimSprite +# adds r0, r6, 0 +# bl StoreSpriteCallbackInData +# pop {r4-r6} +# pop {r0} +# bx r0 +# .align 2, 0 +# _080DC8E4: .4byte gAnimBankTarget +# _080DC8E8: .4byte gBattleAnimArgs +# _080DC8EC: .4byte sub_8078B34 +# _080DC8F0: .4byte DestroyAnimSprite +# thumb_func_end sub_80DC824 - thumb_func_start sub_80DC8F4 -sub_80DC8F4: @ 80DC8F4 - push {r4-r6,lr} - adds r6, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DC918 - ldr r1, _080DC914 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] - adds r0, r6, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - b _080DC934 - .align 2, 0 -_080DC914: .4byte gBattleAnimArgs -_080DC918: - ldr r0, _080DC990 @ =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DC934 - ldr r0, _080DC994 @ =gBattleAnimArgs - ldrh r1, [r0, 0x2] - negs r1, r1 - strh r1, [r0, 0x2] - ldrh r1, [r0] - negs r1, r1 - strh r1, [r0] -_080DC934: - ldr r5, _080DC990 @ =gAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077EE4 - lsls r0, 24 - ldr r4, _080DC994 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r6, 0x20] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077EE4 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r6, 0x22] - ldrh r0, [r4, 0x4] - strh r0, [r6, 0x2E] - ldrb r0, [r5] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x36] - ldr r0, _080DC998 @ =sub_8078B34 - str r0, [r6, 0x1C] - ldr r1, _080DC99C @ =DestroyAnimSprite - adds r0, r6, 0 - bl StoreSpriteCallbackInData - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DC990: .4byte gAnimBankTarget -_080DC994: .4byte gBattleAnimArgs -_080DC998: .4byte sub_8078B34 -_080DC99C: .4byte DestroyAnimSprite - thumb_func_end sub_80DC8F4 +# thumb_func_start sub_80DC8F4 +# sub_80DC8F4: @ 80DC8F4 +# push {r4-r6,lr} +# adds r6, r0, 0 +# bl IsContest +# lsls r0, 24 +# cmp r0, 0 +# beq _080DC918 +# ldr r1, _080DC914 @ =gBattleAnimArgs +# ldrh r0, [r1] +# negs r0, r0 +# strh r0, [r1] +# adds r0, r6, 0 +# movs r1, 0x2 +# bl StartSpriteAffineAnim +# b _080DC934 +# .align 2, 0 +# _080DC914: .4byte gBattleAnimArgs +# _080DC918: +# ldr r0, _080DC990 @ =gAnimBankTarget +# ldrb r0, [r0] +# bl GetBankSide +# lsls r0, 24 +# cmp r0, 0 +# bne _080DC934 +# ldr r0, _080DC994 @ =gBattleAnimArgs +# ldrh r1, [r0, 0x2] +# negs r1, r1 +# strh r1, [r0, 0x2] +# ldrh r1, [r0] +# negs r1, r1 +# strh r1, [r0] +# _080DC934: +# ldr r5, _080DC990 @ =gAnimBankTarget +# ldrb r0, [r5] +# movs r1, 0x2 +# bl sub_8077EE4 +# lsls r0, 24 +# ldr r4, _080DC994 @ =gBattleAnimArgs +# lsrs r0, 24 +# ldrh r1, [r4] +# adds r0, r1 +# strh r0, [r6, 0x20] +# ldrb r0, [r5] +# movs r1, 0x3 +# bl sub_8077EE4 +# lsls r0, 24 +# lsrs r0, 24 +# ldrh r1, [r4, 0x2] +# adds r0, r1 +# strh r0, [r6, 0x22] +# ldrh r0, [r4, 0x4] +# strh r0, [r6, 0x2E] +# ldrb r0, [r5] +# movs r1, 0x2 +# bl GetBankPosition +# lsls r0, 24 +# lsrs r0, 24 +# strh r0, [r6, 0x32] +# ldrb r0, [r5] +# movs r1, 0x3 +# bl GetBankPosition +# lsls r0, 24 +# lsrs r0, 24 +# strh r0, [r6, 0x36] +# ldr r0, _080DC998 @ =sub_8078B34 +# str r0, [r6, 0x1C] +# ldr r1, _080DC99C @ =DestroyAnimSprite +# adds r0, r6, 0 +# bl StoreSpriteCallbackInData +# pop {r4-r6} +# pop {r0} +# bx r0 +# .align 2, 0 +# _080DC990: .4byte gAnimBankTarget +# _080DC994: .4byte gBattleAnimArgs +# _080DC998: .4byte sub_8078B34 +# _080DC99C: .4byte DestroyAnimSprite +# thumb_func_end sub_80DC8F4 - thumb_func_start sub_80DC9A0 -sub_80DC9A0: @ 80DC9A0 - push {r4,r5,lr} - adds r5, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DC9BC - ldr r0, _080DC9FC @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - lsrs r2, r1, 31 - adds r1, r2 - asrs r1, 1 - strh r1, [r0, 0x4] -_080DC9BC: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r1, _080DC9FC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080DCA04 - ldr r4, _080DCA00 @ =gAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - b _080DCA16 - .align 2, 0 -_080DC9FC: .4byte gBattleAnimArgs -_080DCA00: .4byte gAnimBankTarget -_080DCA04: - ldr r0, _080DCA2C @ =gAnimBankTarget - ldrb r0, [r0] - adds r2, r5, 0 - adds r2, 0x32 - adds r3, r5, 0 - adds r3, 0x36 - movs r1, 0x1 - bl sub_807A3FC -_080DCA16: - adds r0, r5, 0 - bl sub_8078BD4 - ldr r0, _080DCA30 @ =gBattleAnimArgs - ldrh r0, [r0, 0x6] - strh r0, [r5, 0x38] - ldr r0, _080DCA34 @ =sub_80DCA38 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DCA2C: .4byte gAnimBankTarget -_080DCA30: .4byte gBattleAnimArgs -_080DCA34: .4byte sub_80DCA38 - thumb_func_end sub_80DC9A0 +# thumb_func_start sub_80DC9A0 +# sub_80DC9A0: @ 80DC9A0 +# push {r4,r5,lr} +# adds r5, r0, 0 +# bl IsContest +# lsls r0, 24 +# cmp r0, 0 +# beq _080DC9BC +# ldr r0, _080DC9FC @ =gBattleAnimArgs +# movs r2, 0x4 +# ldrsh r1, [r0, r2] +# lsrs r2, r1, 31 +# adds r1, r2 +# asrs r1, 1 +# strh r1, [r0, 0x4] +# _080DC9BC: +# adds r0, r5, 0 +# movs r1, 0x1 +# bl sub_80787B0 +# ldr r1, _080DC9FC @ =gBattleAnimArgs +# ldrh r0, [r1, 0x4] +# strh r0, [r5, 0x2E] +# ldrh r0, [r5, 0x20] +# strh r0, [r5, 0x30] +# ldrh r0, [r5, 0x22] +# strh r0, [r5, 0x34] +# movs r2, 0x8 +# ldrsh r0, [r1, r2] +# cmp r0, 0 +# bne _080DCA04 +# ldr r4, _080DCA00 @ =gAnimBankTarget +# ldrb r0, [r4] +# movs r1, 0x2 +# bl GetBankPosition +# lsls r0, 24 +# lsrs r0, 24 +# strh r0, [r5, 0x32] +# ldrb r0, [r4] +# movs r1, 0x3 +# bl GetBankPosition +# lsls r0, 24 +# lsrs r0, 24 +# strh r0, [r5, 0x36] +# b _080DCA16 +# .align 2, 0 +# _080DC9FC: .4byte gBattleAnimArgs +# _080DCA00: .4byte gAnimBankTarget +# _080DCA04: +# ldr r0, _080DCA2C @ =gAnimBankTarget +# ldrb r0, [r0] +# adds r2, r5, 0 +# adds r2, 0x32 +# adds r3, r5, 0 +# adds r3, 0x36 +# movs r1, 0x1 +# bl sub_807A3FC +# _080DCA16: +# adds r0, r5, 0 +# bl sub_8078BD4 +# ldr r0, _080DCA30 @ =gBattleAnimArgs +# ldrh r0, [r0, 0x6] +# strh r0, [r5, 0x38] +# ldr r0, _080DCA34 @ =sub_80DCA38 +# str r0, [r5, 0x1C] +# pop {r4,r5} +# pop {r0} +# bx r0 +# .align 2, 0 +# _080DCA2C: .4byte gAnimBankTarget +# _080DCA30: .4byte gBattleAnimArgs +# _080DCA34: .4byte sub_80DCA38 +# thumb_func_end sub_80DC9A0 - thumb_func_start sub_80DCA38 -sub_80DCA38: @ 80DCA38 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080DCA4E - adds r0, r4, 0 - bl DestroyAnimSprite - b _080DCA6A -_080DCA4E: - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x24] - adds r0, r1 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x3A] - adds r0, 0xD - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] -_080DCA6A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DCA38 +# thumb_func_start sub_80DCA38 +# sub_80DCA38: @ 80DCA38 +# push {r4,lr} +# adds r4, r0, 0 +# bl sub_8078B5C +# lsls r0, 24 +# cmp r0, 0 +# beq _080DCA4E +# adds r0, r4, 0 +# bl DestroyAnimSprite +# b _080DCA6A +# _080DCA4E: +# movs r1, 0x3A +# ldrsh r0, [r4, r1] +# movs r2, 0x38 +# ldrsh r1, [r4, r2] +# bl Sin +# ldrh r1, [r4, 0x24] +# adds r0, r1 +# strh r0, [r4, 0x24] +# ldrh r0, [r4, 0x3A] +# adds r0, 0xD +# movs r1, 0xFF +# ands r0, r1 +# strh r0, [r4, 0x3A] +# _080DCA6A: +# pop {r4} +# pop {r0} +# bx r0 +# thumb_func_end sub_80DCA38 thumb_func_start sub_80DCA70 sub_80DCA70: @ 80DCA70 diff --git a/ld_script.txt b/ld_script.txt index 47e8297b2..ba0705659 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -292,6 +292,7 @@ SECTIONS { src/battle/anim/poison.o(.text); asm/flying.o(.text); asm/psychic.o(.text); + src/battle/anim/bug.o(.text); asm/bug.o(.text); asm/rock.o(.text); asm/ghost.o(.text); diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c new file mode 100644 index 000000000..e9372ed9e --- /dev/null +++ b/src/battle/anim/bug.c @@ -0,0 +1,105 @@ +#include "global.h" +#include "battle_anim.h" +#include "contest.h" +#include "rom_8077ABC.h" +#include "trig.h" +// #include "util.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +static void sub_80DCA38(struct Sprite *sprite); + +// used in Move_MEGAHORN +void sub_80DC824(struct Sprite *sprite) +{ + if (IsContest()) + { + StartSpriteAffineAnim(sprite, 2); + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + else if (!GetBankSide(gAnimBankTarget)) + { + StartSpriteAffineAnim(sprite, 1); + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + + sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; + + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +// used in Move_LEECH_LIFE +void sub_80DC8F4(struct Sprite *sprite) +{ + if (IsContest()) + { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + StartSpriteAffineAnim(sprite, 2); + } + else if (!GetBankSide(gAnimBankTarget)) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + + sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +// used in 2 moves: +// Move_STRING_SHOT, Move_SPIDER_WEB +void sub_80DC9A0(struct Sprite *sprite) +{ + if (IsContest()) + gBattleAnimArgs[2] /= 2; + + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + + if (!gBattleAnimArgs[4]) + { + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + } + else + { + sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + } + + sub_8078BD4(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = sub_80DCA38; +} + +static void sub_80DCA38(struct Sprite *sprite) +{ + if (sub_8078B5C(sprite)) + { + DestroyAnimSprite(sprite); + return; + } + + sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]); + sprite->data[6] = (sprite->data[6] + 13) & 0xFF; +} \ No newline at end of file -- cgit v1.2.3 From 730fe36c1b001f5d0e2b6b67780aab61ca1bc6c6 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Tue, 9 Jan 2018 18:45:57 +0100 Subject: deleted decompiled asm --- asm/bug.s | 280 -------------------------------------------------------------- 1 file changed, 280 deletions(-) diff --git a/asm/bug.s b/asm/bug.s index ddd8726db..3d1fb8669 100755 --- a/asm/bug.s +++ b/asm/bug.s @@ -7,286 +7,6 @@ @ bug -# thumb_func_start sub_80DC824 -# sub_80DC824: @ 80DC824 -# push {r4-r6,lr} -# adds r6, r0, 0 -# bl IsContest -# lsls r0, 24 -# cmp r0, 0 -# beq _080DC850 -# adds r0, r6, 0 -# movs r1, 0x2 -# bl StartSpriteAffineAnim -# ldr r0, _080DC84C @ =gBattleAnimArgs -# ldrh r1, [r0, 0x4] -# negs r1, r1 -# strh r1, [r0, 0x4] -# ldrh r1, [r0] -# negs r1, r1 -# strh r1, [r0] -# b _080DC880 -# .align 2, 0 -# _080DC84C: .4byte gBattleAnimArgs -# _080DC850: -# ldr r0, _080DC8E4 @ =gAnimBankTarget -# ldrb r0, [r0] -# bl GetBankSide -# lsls r0, 24 -# cmp r0, 0 -# bne _080DC880 -# adds r0, r6, 0 -# movs r1, 0x1 -# bl StartSpriteAffineAnim -# ldr r1, _080DC8E8 @ =gBattleAnimArgs -# ldrh r0, [r1, 0x2] -# negs r0, r0 -# strh r0, [r1, 0x2] -# ldrh r0, [r1, 0x4] -# negs r0, r0 -# strh r0, [r1, 0x4] -# ldrh r0, [r1, 0x6] -# negs r0, r0 -# strh r0, [r1, 0x6] -# ldrh r0, [r1] -# negs r0, r0 -# strh r0, [r1] -# _080DC880: -# ldr r5, _080DC8E4 @ =gAnimBankTarget -# ldrb r0, [r5] -# movs r1, 0x2 -# bl sub_8077EE4 -# lsls r0, 24 -# ldr r4, _080DC8E8 @ =gBattleAnimArgs -# lsrs r0, 24 -# ldrh r1, [r4] -# adds r0, r1 -# strh r0, [r6, 0x20] -# ldrb r0, [r5] -# movs r1, 0x3 -# bl sub_8077EE4 -# lsls r0, 24 -# lsrs r0, 24 -# ldrh r1, [r4, 0x2] -# adds r0, r1 -# strh r0, [r6, 0x22] -# ldrh r0, [r4, 0x8] -# strh r0, [r6, 0x2E] -# ldrb r0, [r5] -# movs r1, 0x2 -# bl GetBankPosition -# lsls r0, 24 -# lsrs r0, 24 -# ldrh r1, [r4, 0x4] -# adds r0, r1 -# strh r0, [r6, 0x32] -# ldrb r0, [r5] -# movs r1, 0x3 -# bl GetBankPosition -# lsls r0, 24 -# lsrs r0, 24 -# ldrh r4, [r4, 0x6] -# adds r0, r4 -# strh r0, [r6, 0x36] -# ldr r0, _080DC8EC @ =sub_8078B34 -# str r0, [r6, 0x1C] -# ldr r1, _080DC8F0 @ =DestroyAnimSprite -# adds r0, r6, 0 -# bl StoreSpriteCallbackInData -# pop {r4-r6} -# pop {r0} -# bx r0 -# .align 2, 0 -# _080DC8E4: .4byte gAnimBankTarget -# _080DC8E8: .4byte gBattleAnimArgs -# _080DC8EC: .4byte sub_8078B34 -# _080DC8F0: .4byte DestroyAnimSprite -# thumb_func_end sub_80DC824 - -# thumb_func_start sub_80DC8F4 -# sub_80DC8F4: @ 80DC8F4 -# push {r4-r6,lr} -# adds r6, r0, 0 -# bl IsContest -# lsls r0, 24 -# cmp r0, 0 -# beq _080DC918 -# ldr r1, _080DC914 @ =gBattleAnimArgs -# ldrh r0, [r1] -# negs r0, r0 -# strh r0, [r1] -# adds r0, r6, 0 -# movs r1, 0x2 -# bl StartSpriteAffineAnim -# b _080DC934 -# .align 2, 0 -# _080DC914: .4byte gBattleAnimArgs -# _080DC918: -# ldr r0, _080DC990 @ =gAnimBankTarget -# ldrb r0, [r0] -# bl GetBankSide -# lsls r0, 24 -# cmp r0, 0 -# bne _080DC934 -# ldr r0, _080DC994 @ =gBattleAnimArgs -# ldrh r1, [r0, 0x2] -# negs r1, r1 -# strh r1, [r0, 0x2] -# ldrh r1, [r0] -# negs r1, r1 -# strh r1, [r0] -# _080DC934: -# ldr r5, _080DC990 @ =gAnimBankTarget -# ldrb r0, [r5] -# movs r1, 0x2 -# bl sub_8077EE4 -# lsls r0, 24 -# ldr r4, _080DC994 @ =gBattleAnimArgs -# lsrs r0, 24 -# ldrh r1, [r4] -# adds r0, r1 -# strh r0, [r6, 0x20] -# ldrb r0, [r5] -# movs r1, 0x3 -# bl sub_8077EE4 -# lsls r0, 24 -# lsrs r0, 24 -# ldrh r1, [r4, 0x2] -# adds r0, r1 -# strh r0, [r6, 0x22] -# ldrh r0, [r4, 0x4] -# strh r0, [r6, 0x2E] -# ldrb r0, [r5] -# movs r1, 0x2 -# bl GetBankPosition -# lsls r0, 24 -# lsrs r0, 24 -# strh r0, [r6, 0x32] -# ldrb r0, [r5] -# movs r1, 0x3 -# bl GetBankPosition -# lsls r0, 24 -# lsrs r0, 24 -# strh r0, [r6, 0x36] -# ldr r0, _080DC998 @ =sub_8078B34 -# str r0, [r6, 0x1C] -# ldr r1, _080DC99C @ =DestroyAnimSprite -# adds r0, r6, 0 -# bl StoreSpriteCallbackInData -# pop {r4-r6} -# pop {r0} -# bx r0 -# .align 2, 0 -# _080DC990: .4byte gAnimBankTarget -# _080DC994: .4byte gBattleAnimArgs -# _080DC998: .4byte sub_8078B34 -# _080DC99C: .4byte DestroyAnimSprite -# thumb_func_end sub_80DC8F4 - -# thumb_func_start sub_80DC9A0 -# sub_80DC9A0: @ 80DC9A0 -# push {r4,r5,lr} -# adds r5, r0, 0 -# bl IsContest -# lsls r0, 24 -# cmp r0, 0 -# beq _080DC9BC -# ldr r0, _080DC9FC @ =gBattleAnimArgs -# movs r2, 0x4 -# ldrsh r1, [r0, r2] -# lsrs r2, r1, 31 -# adds r1, r2 -# asrs r1, 1 -# strh r1, [r0, 0x4] -# _080DC9BC: -# adds r0, r5, 0 -# movs r1, 0x1 -# bl sub_80787B0 -# ldr r1, _080DC9FC @ =gBattleAnimArgs -# ldrh r0, [r1, 0x4] -# strh r0, [r5, 0x2E] -# ldrh r0, [r5, 0x20] -# strh r0, [r5, 0x30] -# ldrh r0, [r5, 0x22] -# strh r0, [r5, 0x34] -# movs r2, 0x8 -# ldrsh r0, [r1, r2] -# cmp r0, 0 -# bne _080DCA04 -# ldr r4, _080DCA00 @ =gAnimBankTarget -# ldrb r0, [r4] -# movs r1, 0x2 -# bl GetBankPosition -# lsls r0, 24 -# lsrs r0, 24 -# strh r0, [r5, 0x32] -# ldrb r0, [r4] -# movs r1, 0x3 -# bl GetBankPosition -# lsls r0, 24 -# lsrs r0, 24 -# strh r0, [r5, 0x36] -# b _080DCA16 -# .align 2, 0 -# _080DC9FC: .4byte gBattleAnimArgs -# _080DCA00: .4byte gAnimBankTarget -# _080DCA04: -# ldr r0, _080DCA2C @ =gAnimBankTarget -# ldrb r0, [r0] -# adds r2, r5, 0 -# adds r2, 0x32 -# adds r3, r5, 0 -# adds r3, 0x36 -# movs r1, 0x1 -# bl sub_807A3FC -# _080DCA16: -# adds r0, r5, 0 -# bl sub_8078BD4 -# ldr r0, _080DCA30 @ =gBattleAnimArgs -# ldrh r0, [r0, 0x6] -# strh r0, [r5, 0x38] -# ldr r0, _080DCA34 @ =sub_80DCA38 -# str r0, [r5, 0x1C] -# pop {r4,r5} -# pop {r0} -# bx r0 -# .align 2, 0 -# _080DCA2C: .4byte gAnimBankTarget -# _080DCA30: .4byte gBattleAnimArgs -# _080DCA34: .4byte sub_80DCA38 -# thumb_func_end sub_80DC9A0 - -# thumb_func_start sub_80DCA38 -# sub_80DCA38: @ 80DCA38 -# push {r4,lr} -# adds r4, r0, 0 -# bl sub_8078B5C -# lsls r0, 24 -# cmp r0, 0 -# beq _080DCA4E -# adds r0, r4, 0 -# bl DestroyAnimSprite -# b _080DCA6A -# _080DCA4E: -# movs r1, 0x3A -# ldrsh r0, [r4, r1] -# movs r2, 0x38 -# ldrsh r1, [r4, r2] -# bl Sin -# ldrh r1, [r4, 0x24] -# adds r0, r1 -# strh r0, [r4, 0x24] -# ldrh r0, [r4, 0x3A] -# adds r0, 0xD -# movs r1, 0xFF -# ands r0, r1 -# strh r0, [r4, 0x3A] -# _080DCA6A: -# pop {r4} -# pop {r0} -# bx r0 -# thumb_func_end sub_80DCA38 - thumb_func_start sub_80DCA70 sub_80DCA70: @ 80DCA70 push {r4,lr} -- cgit v1.2.3 From 03b167a73e2f18fa79bbf0e6ffe11e0c35c12ad8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 14:26:15 -0600 Subject: more text/menu renaming --- asm/contest_link_80C2020.s | 2 +- asm/pokemon_storage_system.s | 18 +++--- asm/pokenav.s | 12 ++-- include/menu.h | 21 +++---- include/menu_cursor.h | 8 +-- include/text.h | 26 ++++---- src/battle/battle_2.c | 6 +- src/battle/battle_4.c | 8 +-- src/battle/battle_controller_player.c | 24 +++---- src/battle/battle_controller_safari.c | 6 +- src/battle/battle_controller_wally.c | 6 +- src/battle/battle_party_menu.c | 2 +- src/battle/battle_records.c | 2 +- src/battle/reshow_battle_screen.c | 2 +- src/contest.c | 32 +++++----- src/debug/matsuda_debug_menu.c | 10 +-- src/debug/mori_debug_menu.c | 2 +- src/debug/sound_check_menu.c | 4 +- src/debug/unknown_debug_menu.c | 2 +- src/easy_chat_1.c | 14 ++--- src/engine/clear_save_data_menu.c | 6 +- src/engine/link.c | 6 +- src/engine/main_menu.c | 32 +++++----- src/engine/menu.c | 114 ++++++++++++++++++++-------------- src/engine/menu_cursor.c | 62 +++++++++--------- src/engine/mystery_event_menu.c | 2 +- src/engine/name_string_util.c | 4 +- src/engine/naming_screen.c | 2 +- src/engine/option_menu.c | 4 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/save_failed_screen.c | 2 +- src/engine/text.c | 58 ++++++++--------- src/engine/trade.c | 44 ++++++------- src/engine/trainer_card.c | 16 ++--- src/field/berry_tag_screen.c | 2 +- src/field/choose_party.c | 8 +-- src/field/daycare.c | 6 +- src/field/decoration.c | 24 +++---- src/field/diploma.c | 2 +- src/field/field_effect.c | 4 +- src/field/field_region_map.c | 2 +- src/field/field_specials.c | 4 +- src/field/item_menu.c | 16 ++--- src/field/mauville_man.c | 2 +- src/field/menu_helpers.c | 2 +- src/field/money.c | 2 +- src/field/overworld.c | 8 +-- src/field/party_menu.c | 38 ++++++------ src/field/player_pc.c | 28 ++++----- src/field/pokeblock.c | 10 +-- src/field/region_map.c | 4 +- src/field/script_menu.c | 10 +-- src/field/secret_base.c | 10 +-- src/field/shop.c | 14 ++--- src/field/slot_machine.c | 6 +- src/field/start_menu.c | 8 +-- src/field/starter_choose.c | 4 +- src/field/trader.c | 6 +- src/field/tv.c | 8 +-- src/field/use_pokeblock.c | 2 +- src/field/wallclock.c | 8 +-- src/pokemon/learn_move.c | 18 +++--- src/pokemon/mail.c | 2 +- src/pokemon/mon_markings.c | 4 +- src/pokemon/pokeblock_feed.c | 2 +- src/pokemon/pokedex.c | 30 ++++----- src/pokemon/pokemon_1.c | 2 +- src/pokemon/pokemon_menu.c | 18 +++--- src/pokemon/pokemon_summary_screen.c | 8 +-- src/pokenav_before.c | 10 +-- src/roulette.c | 2 +- src/scene/berry_blender.c | 20 +++--- src/scene/contest_painting.c | 4 +- src/scene/credits.c | 2 +- src/scene/egg_hatch.c | 4 +- src/scene/evolution_scene.c | 14 ++--- src/scene/hall_of_fame.c | 8 +-- 77 files changed, 481 insertions(+), 466 deletions(-) diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 5e1265f6b..71788c918 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -14,7 +14,7 @@ sub_80C2020: @ 80C2020 strh r0, [r5] ldr r4, _080C20F0 @ =gWindowTemplate_81E6FA0 adds r0, r4, 0 - bl SetUpWindowConfig + bl Text_LoadWindowTemplate ldr r0, _080C20F4 @ =gMenuWindow adds r1, r4, 0 bl Text_InitWindowWithTemplate diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index fd49e1520..d878821cb 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -682,7 +682,7 @@ _08095FA2: _08095FC0: .4byte gMain _08095FC4: .4byte gUnknown_083B600C _08095FC8: - bl HandleDestroyMenuCursors + bl Menu_DestroyCursor movs r0, 0 movs r1, 0 movs r2, 0xD @@ -897,7 +897,7 @@ StorageSystemCreatePrimaryMenu: @ 8096168 movs r0, 0x1 movs r1, 0x1 movs r2, 0x4 - bl PrintMenuItems + bl Menu_PrintItems str r4, [sp] movs r0, 0xC str r0, [sp, 0x4] @@ -1643,7 +1643,7 @@ sub_80966F4: @ 80966F4 ldr r0, _0809677C @ =gWindowTemplate_81E6D38 adds r1, r5, 0 mov r2, r8 - bl sub_8004E3C + bl Text_InitWindow8004E3C str r5, [r4] str r6, [r4, 0x4] ldr r0, _08096780 @ =0x80000200 @@ -1847,7 +1847,7 @@ _080968D4: b _0809697A _080968E8: ldr r0, _080968F0 @ =gWindowTemplate_81E6D00 - bl SetUpWindowConfig + bl Text_LoadWindowTemplate b _0809697A .align 2, 0 _080968F0: .4byte gWindowTemplate_81E6D00 @@ -1986,7 +1986,7 @@ _08096A2C: .4byte gUnknown_0203847D _08096A30: .4byte gUnknown_0203847F _08096A34: ldr r0, _08096A3C @ =gWindowTemplate_81E6D00 - bl SetUpWindowConfig + bl Text_LoadWindowTemplate b _08096AD8 .align 2, 0 _08096A3C: .4byte gWindowTemplate_81E6D00 @@ -5666,7 +5666,7 @@ sub_8098A38: @ 8098A38 thumb_func_start sub_8098A5C sub_8098A5C: @ 8098A5C push {lr} - bl HandleDestroyMenuCursors + bl Menu_DestroyCursor movs r0, 0xA movs r1, 0x10 movs r2, 0x1D @@ -8748,7 +8748,7 @@ sub_809A1BC: @ 809A1BC ldr r0, _0809A234 @ =gWindowTemplate_81E6D38 adds r1, r5, 0 str r3, [sp, 0x4] - bl sub_8004E3C + bl Text_InitWindow8004E3C str r5, [r4] ldr r3, [sp, 0x4] str r3, [r4, 0x4] @@ -14498,7 +14498,7 @@ sub_809CE84: @ 809CE84 lsls r3, 5 adds r4, r3 adds r3, r4, 0 - bl PrintMenuItems + bl Menu_PrintItems ldrb r1, [r5] adds r1, 0x1 lsls r1, 24 @@ -14582,7 +14582,7 @@ _0809CF8E: negs r0, r0 cmp r5, r0 beq _0809CFB2 - bl HandleDestroyMenuCursors + bl Menu_DestroyCursor ldr r0, _0809CFD0 @ =gUnknown_083B6DB4 ldr r1, [r0] ldr r2, _0809CFD4 @ =0x000011ba diff --git a/asm/pokenav.s b/asm/pokenav.s index 34d8aba2e..7c766addc 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -567,7 +567,7 @@ sub_80F0A74: @ 80F0A74 adds r0, r4, 0 movs r1, 0x61 movs r3, 0 - bl MenuPrint_PixelCoords + bl Menu_PrintTextPixelCoords ldr r1, _080F0AE8 @ =0x0000d158 adds r0, r5, r1 ldrh r0, [r0] @@ -1032,7 +1032,7 @@ _080F0E42: _080F0E54: movs r1, 0x61 movs r3, 0 - bl MenuPrint_PixelCoords + bl Menu_PrintTextPixelCoords b _080F0EA0 .align 2, 0 _080F0E60: .4byte gUnknown_083DFEC4 @@ -1054,7 +1054,7 @@ _080F0E6C: adds r0, r4, 0 movs r1, 0x61 movs r3, 0 - bl MenuPrint_PixelCoords + bl Menu_PrintTextPixelCoords b _080F0D6C .align 2, 0 _080F0E94: .4byte gUnknown_083DFEC4 @@ -1358,7 +1358,7 @@ _080F10FC: .4byte gUnknown_083DFEC4 _080F1100: .4byte 0x0000d162 _080F1104: ldr r0, _080F110C @ =gWindowTemplate_81E70B8 - bl SetUpWindowConfig + bl Text_LoadWindowTemplate b _080F1218 .align 2, 0 _080F110C: .4byte gWindowTemplate_81E70B8 @@ -2422,7 +2422,7 @@ _080F19B8: movs r1, 0x1 movs r2, 0x70 movs r3, 0x1 - bl MenuPrint_PixelCoords + bl Menu_PrintTextPixelCoords pop {r4,r5} pop {r0} bx r0 @@ -7665,7 +7665,7 @@ sub_80F4194: @ 80F4194 ldr r0, [r4, 0x8] ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0 adds r1, r6, 0 - bl sub_8004E3C + bl Text_InitWindow8004E3C movs r3, 0x88 lsls r3, 2 adds r1, r6, r3 diff --git a/include/menu.h b/include/menu.h index 3339ff644..3295cd5c5 100644 --- a/include/menu.h +++ b/include/menu.h @@ -45,7 +45,7 @@ void unref_sub_8071FBC(u16, u8, u8, u8, u8); void Menu_DisplayDialogueFrame(void); void MenuPrintMessage(const u8 *, u8, u8); void MenuPrintMessageDefaultCoords(const u8 *); -void MenuSetText(const u8 *); +void Menu_SetText(const u8 *); u8 Menu_UpdateWindowText(void); u8 unref_sub_8072098(void); void Menu_ClearWindowText(void); @@ -54,17 +54,15 @@ u8 Menu_MoveCursorNoWrap(s8); u8 Menu_GetCursorPos(void); s8 Menu_ProcessInput(void); s8 Menu_ProcessInputNoWrap(void); -u8 MoveMenuCursor3(s8); -u8 MoveMenuCursor4(s8); void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); s8 Menu_ProcessInputGridLayout(void); -u8 sub_807288C(u8); -void PrintMenuItems(u8, u8, u8, const struct MenuAction[]); -void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); +u8 Menu_GetColumnXCoord(u8); +void Menu_PrintItems(u8, u8, u8, const struct MenuAction[]); +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); -s8 ProcessMenuInputNoWrap_(void); -u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8); +s8 Menu_ProcessInputNoWrap_(void); +u8 Menu_PrintTextPixelCoords(const u8 *, u8, u16, u8); u8 sub_8072A18(const u8 *, u8, u16, u8, u32); u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32); @@ -75,16 +73,15 @@ u8 *sub_8072C14(u8 *, s32, u8, u8); u8 *sub_8072C44(u8 *, s32, u8, u8); u8 *sub_8072C74(u8 *, const u8 *, u8, u8); u8 sub_8072CA4(const u8 *s); -u8 sub_8072CBC(void); +u8 Menu_GetTextWindowPaletteNum(void); void Menu_GetTextColors(u8 *, u8 *, u8 *); -u32 MenuUpdateWindowText_OverrideLineLength(u8); +u32 Menu_UpdateWindowTextOverrideLineLength(u8); struct Window * unref_sub_8072D0C(void); u8 InitMenu(u8, u8, u8, u8, u8, u8); -void RedrawMenuCursor(u8, u8); void unref_sub_8072DC0(void); void sub_8072DCC(u8); void sub_8072DDC(u8); -void HandleDestroyMenuCursors(void); +void Menu_DestroyCursor(void); #if GERMAN u8 *de_sub_8073174(u8 *name, const u8 *format); diff --git a/include/menu_cursor.h b/include/menu_cursor.h index ca82ef244..8d9a4f23c 100644 --- a/include/menu_cursor.h +++ b/include/menu_cursor.h @@ -4,11 +4,11 @@ #include "sprite.h" void sub_814A590(void); -u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +u8 MenuCursor_Create814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); u8 sub_814A758(u8 a1, u8 a2, u8 a3, u8 a4); u8 unref_sub_814A7AC(u8 a1, u16 a2, u8 a3); void DestroyMenuCursor(void); -void sub_814A880(u8 a1, u8 a2); +void MenuCursor_SetPos814A880(u8 a1, u8 a2); void sub_814A904(void); void sub_814A958(u8 a1); void sub_814AABC(void (*callback)(struct Sprite *)); @@ -16,8 +16,8 @@ void sub_814AAF8(u16 a1); void sub_814AB84(void); void unref_sub_814ABE4(int a1); u8 CreateBlendedOutlineCursor(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); -void sub_814AD44(void); -void sub_814AD7C(u8 a1, u8 a2); +void MenuCursor_Destroy814AD44(void); +void MenuCursor_SetPos814AD7C(u8 a1, u8 a2); void sub_814ADC8(void); void sub_814ADF4(u8 a1); diff --git a/include/text.h b/include/text.h index c34f222d5..f0d039d45 100644 --- a/include/text.h +++ b/include/text.h @@ -151,8 +151,8 @@ extern const struct WindowTemplate gWindowTemplate_81E6D54; extern const struct WindowTemplate gWindowTemplate_81E6D70; extern const struct WindowTemplate gWindowTemplate_81E6D8C; extern const struct WindowTemplate gWindowTemplate_81E6DA8; -extern const struct WindowTemplate WindowConfig_TrainerCard_Back_Values; -extern const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels; +extern const struct WindowTemplate gWindowTemplate_TrainerCard_Back_Values; +extern const struct WindowTemplate gWindowTemplate_TrainerCard_Back_Labels; extern const struct WindowTemplate gWindowTemplate_81E6DFC; extern const struct WindowTemplate gWindowTemplate_81E6E18; extern const struct WindowTemplate gWindowTemplate_81E6E34; @@ -206,14 +206,14 @@ extern u8 gStringVar4[]; extern u8 gTileBuffer[]; void LoadFontDefaultPalette(const struct WindowTemplate *winConfig); -void SetUpWindowConfig(const struct WindowTemplate *winConfig); +void Text_LoadWindowTemplate(const struct WindowTemplate *winConfig); u16 InitWindowTileData(struct Window *win, u16 startOffset); u32 MultistepInitWindowTileData(struct Window *win, u16 startOffset); bool32 MultistepLoadFont(void); void Text_InitWindowWithTemplate(struct Window *win, const struct WindowTemplate *winConfig); void Text_InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); void Text_InitWindow8002E4C(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6); -void sub_8002E90(struct Window *win, const u8 *text); +void Text_SetWindowText(struct Window *win, const u8 *text); void Text_InitWindow8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); u8 Text_PrintWindow8002F44(struct Window *win); u8 Text_PrintWindowSimple(struct Window *win); @@ -232,24 +232,24 @@ void Text_ClearWindow(struct Window *win); u16 Text_GetWindowTilemapEntry(struct Window *win, u8 x, u8 y); void Text_FillWindowBorder(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom); void DrawWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom); -void FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom); -void FillWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom); -void ZeroFillWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom); +void Text_FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom); +void Text_FillWindowRectDefPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom); +void Text_EraseWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom); void Text_BlankWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom); u8 GetExtCtrlCodeLength(u8 code); u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignType); u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignType); u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 alignType); u8 GetStringWidth(struct Window *win, const u8 *s); -u8 sub_8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6); -u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); -u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6); -u8 sub_8004E24(struct Window *win); +u8 Text_InitWindow8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6); +u8 Text_InitWindow8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top); +u8 Text_InitWindow8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6); +u8 Text_GetWindowPaletteNum(struct Window *win); void Text_GetTextColors(struct Window *win, u8 *foreground, u8 *background, u8 *shadow); -void sub_8004E3C(const struct WindowTemplate *winConfig, u8 *tileData, const u8 *text); +void Text_InitWindow8004E3C(const struct WindowTemplate *winConfig, u8 *tileData, const u8 *text); u8 Text_GetStringWidthFromWindowTemplate(const struct WindowTemplate *winConfig, const u8 *s); void ConvertInternationalString(u8 *s, u8 language); -void StripExtCtrlCodes(u8 *str); +void Text_StripExtCtrlCodes(u8 *str); s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2); u8 sub_8004FD0(struct Window *win, u8 *dest, const u8 *src, u16 tileDataStartOffset, u8 left, u16 top, u8 width, u32 a8); diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 42cc0b538..249b67e0d 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -234,7 +234,7 @@ void InitBattle(void) } //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); sub_80895F8(gUnknown_081F9674); - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -553,7 +553,7 @@ void sub_800F02C(void) gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[i]); - StripExtCtrlCodes(nickname); + Text_StripExtCtrlCodes(nickname); gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE); if (gUnknown_02023A00[i].language != 1) PadNameString(nickname, 0); @@ -1210,7 +1210,7 @@ void c2_8011A1C(void) gUnknown_03004DE0[0][i] = 0xFF10; gUnknown_03004DE0[1][i] = 0xFF10; } - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 4be9b7d1c..164329c1b 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -136,7 +136,7 @@ u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); void IncrementGameStat(u8 index); u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight); -u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +u8 MenuCursor_Create814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); void DestroyMenuCursor(void); void sub_802BC6C(void); u8 sub_809FA30(void); @@ -155,7 +155,7 @@ u8 Overworld_GetMapTypeOfSaveblockLocation(void); u8 CalculatePlayerPartyCount(void); u16 Sqrt(u32 num); u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display -void sub_814A880(u8 a1, u8 a2); +void MenuCursor_SetPos814A880(u8 a1, u8 a2); u8 CheckMoveLimitations(u8 bank, u8 unusable_moves, u8 flags); bool8 IsLinkDoubleBattle(void); void sub_8094B6C(u8 bank, u8 partyID, u8 r2); @@ -10769,7 +10769,7 @@ void sub_8023A80(void) sub_802BBD4(0x18, 8, 0x1D, 0xD, 0); Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9); Text_PrintWindow8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); + MenuCursor_Create814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); } void sub_8023AD8(void) @@ -17333,7 +17333,7 @@ _0802BC68: .4byte 0x00001025\n\ void sub_802BC6C(void) { - sub_814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be? + MenuCursor_SetPos814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be? } void nullsub_6(void) diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 4bbda2afd..489581132 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -744,7 +744,7 @@ void sub_802C68C(void) else gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1; sub_802E3B4(gUnknown_03004344, 27); - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37); Text_PrintWindow8002F44(&gUnknown_03004210); gBattleBankFunc[gActiveBank] = sub_802CA60; @@ -853,7 +853,7 @@ void sub_802CA60(void) gBattleBankFunc[gActiveBank] = sub_802C68C; gMoveSelectionCursor[gActiveBank] = gUnknown_03004344; sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); Text_PrintWindow8002F44(&gUnknown_03004210); sub_802E220(); @@ -866,7 +866,7 @@ void sub_802CA60(void) sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); sub_802E12C(gMoveSelectionCursor[gActiveBank], BattleText_Format); gBattleBankFunc[gActiveBank] = sub_802C68C; - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); Text_PrintWindow8002F44(&gUnknown_03004210); sub_802E220(); @@ -1572,7 +1572,7 @@ void sub_802E1B0(void) s32 i; gUnknown_03004348 = 0; - FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A); for (i = 0; i < 4; i++) { nullsub_7(i); @@ -1613,7 +1613,7 @@ void sub_802E2D4(void) { if (gBattleBufferA[gActiveBank][2] == 1) { - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37); } else @@ -1623,7 +1623,7 @@ void sub_802E2D4(void) str = StringCopy(str, BattleText_Format); StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]); - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); } Text_PrintWindow8002F44(&gUnknown_03004210); @@ -1652,7 +1652,7 @@ const u8 gUnknown_081FAE91[][2] = void sub_802E3B4(u8 a, int unused) { sub_814A958(0x48); - sub_814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]); + MenuCursor_SetPos814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]); } void nullsub_7(u8 a) @@ -1662,7 +1662,7 @@ void nullsub_7(u8 a) void sub_802E3E4(u8 a, int unused) { sub_814A958(0x2A); - sub_814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]); + MenuCursor_SetPos814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]); } void nullsub_8(u8 a) @@ -2580,14 +2580,14 @@ void PlayerHandlecmd18(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 160; - FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); + Text_FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); + Text_FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); gBattleBankFunc[gActiveBank] = sub_802C098; Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); Text_PrintWindow8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 11679, 0); for (r4 = 0; r4 < 4; r4++) nullsub_8(r4); @@ -2605,7 +2605,7 @@ void PlayerHandlecmd19() void PlayerHandlecmd20(void) { - sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); sub_80304A8(); gBattleBankFunc[gActiveBank] = sub_802C68C; } diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 72a0cc32c..a4b610752 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -472,13 +472,13 @@ void SafariHandlecmd18(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 160; gUnknown_03004210.paletteNum = 0; - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2; Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35); Text_PrintWindow8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 11679, 0); for (i = 0; i < 4; i++) nullsub_8(i); diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 6a9e8071e..6266d955c 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -1265,12 +1265,12 @@ void WallyHandlecmd18(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 160; gUnknown_03004210.paletteNum = 0; - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); gBattleBankFunc[gActiveBank] = sub_81372BC; Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); Text_PrintWindow8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); for (i = 0; i < 4; i++) nullsub_8(i); sub_802E3E4(0, 0); diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index 67f6e24ef..68a97c536 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -723,7 +723,7 @@ static void Task_BattlePartyMenuShift(u8 taskId) static void Task_BattlePartyMenuCancel(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); ClosePartyPopupMenu(gTasks[taskId].data[4], sBattlePartyPopupMenus); gTasks[taskId].data[4] = gTasks[taskId].data[5]; PrintPartyMenuPromptText(0, 0); diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index fb7392f33..4979760d7 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -249,7 +249,7 @@ void ShowLinkBattleRecords(void) { #if ENGLISH Menu_PrintText(gOtherText_WinLoseDraw, 12, 6); #elif GERMAN - MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1); + Menu_PrintTextPixelCoords(gOtherText_WinLoseDraw, 88, 48, 1); #endif for (i = 0; i < 5; i++) diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index bf77e5c07..42bb3ba7f 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -78,7 +78,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) { case 0: dp12_8087EA4(); - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattle_BG0_X = 0; diff --git a/src/contest.c b/src/contest.c index 3677a1d25..8985d6490 100644 --- a/src/contest.c +++ b/src/contest.c @@ -357,7 +357,7 @@ void LoadContestBgAfterMoveAnim(void) void SetUpContestWindow(void) { - SetUpWindowConfig(&gWindowTemplate_81E6FD8); + Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6FF4); } @@ -686,7 +686,7 @@ void sub_80ABCDC(u8 taskId) gBattle_BG0_Y = 0xA0; gBattle_BG2_Y = 0xA0; - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA340[0][0], @@ -725,7 +725,7 @@ void sub_80ABCDC(u8 taskId) Text_PrintWindow8002F44(&gUnknown_03004210); } - sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); sub_80AC0AC(sContest.playerMoveChoice); sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]); gTasks[taskId].func = sub_80ABEA0; @@ -757,7 +757,7 @@ void sub_80ABEA0(u8 taskId) sub_814A904(); PlaySE(SE_SELECT); sub_80AFFE0(FALSE); - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA340[0][0], @@ -809,7 +809,7 @@ void sub_80ABEA0(u8 taskId) void sub_80AC0AC(s8 a) { - sub_814A880(4, 88 + a * 16); + MenuCursor_SetPos814A880(4, 88 + a * 16); } void nullsub_17(s8 a) @@ -1940,7 +1940,7 @@ void Contest_CreatePlayerMon(u8 partyIndex) s16 tough; StringCopy(name, gSaveBlock2.playerName); - StripExtCtrlCodes(name); + Text_StripExtCtrlCodes(name); if (gIsLinkContest & 1) { u8 temp = name[5]; @@ -1960,7 +1960,7 @@ void Contest_CreatePlayerMon(u8 partyIndex) StringGetEnd10(name); if (gIsLinkContest & 1) { - StripExtCtrlCodes(name); + Text_StripExtCtrlCodes(name); if (GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) { name[5] = EOS; @@ -2121,7 +2121,7 @@ void sub_80AE514(void) for (i = 0; i < 4; i++) { - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA308[gUnknown_02038696[i]][0], @@ -2161,7 +2161,7 @@ void sub_80AE5D4(u8 p, u8 b) if ((gIsLinkContest & 1) && gLinkPlayers[p].language == LANGUAGE_JAPANESE) { StringCopy(str, gLinkPlayers[p].name); - sub_8004D04( + Text_InitWindow8004D04( &gUnknown_03004210, gDisplayedStringBattle, 592 + gUnknown_02038696[p] * 22, @@ -2198,7 +2198,7 @@ void sub_80AE6E4(u8 a, u8 b) str = sub_80AE598(str, gContestMons[a].nickname, b); *str = EOS; - sub_8004D04( + Text_InitWindow8004D04( &gUnknown_03004210, gDisplayedStringBattle, 512 + gUnknown_02038696[a] * 20, @@ -2383,7 +2383,7 @@ void sub_80AEBEC(u16 a) s32 i; u8 numHearts; - FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 31, 16, 34); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 11, 31, 16, 34); category = gContestMoves[a].contestCategory; if (category == CONTEST_CATEGORY_COOL) @@ -2438,7 +2438,7 @@ void sub_80AEBEC(u16 a) void sub_80AED58(void) { - FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 35, 28, 40); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 11, 35, 28, 40); } // unused @@ -2614,7 +2614,7 @@ void sub_80AF120(void) void sub_80AF138(void) { - FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 1, 15, 17, 18); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 1, 15, 17, 18); } u16 GetChosenMove(u8 a) @@ -2674,7 +2674,7 @@ void unref_sub_80AF280(u8 a) void sub_80AF2A0(u8 a) { - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA318[a][0], @@ -4146,7 +4146,7 @@ void unref_sub_80B0CF4(void) for (i = 0; i < 4; i++) { - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA308[i][0], @@ -4175,7 +4175,7 @@ void sub_80B0D7C(void) for (i = 0; i < 4; i++) { - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA308[i][0], diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 52b83d4b1..0585c4e00 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -249,7 +249,7 @@ u8 unref_sub_80A9B28(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 17, 18); - PrintMenuItems(1, 1, 7, gMatsudaDebugMenuActions); + Menu_PrintItems(1, 1, 7, gMatsudaDebugMenuActions); InitMenu(0, 1, 1, 7, 0, 16); gCallback_03004AE8 = sub_80A9B78; return 0; @@ -449,7 +449,7 @@ static void sub_80A9F50(void) { REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP; REG_DISPCNT |= DISPCNT_OBJ_ON | DISPCNT_BG0_ON; - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6C3C); REG_MOSAIC = 0; REG_BLDCNT = 0; @@ -573,7 +573,7 @@ void sub_80AA280(u8 var) // no? { u8 i; - FillWindowRect_DefaultPalette(&gMenuWindow, 0, 0, 0, 0x1E, 3); + Text_FillWindowRectDefPalette(&gMenuWindow, 0, 0, 0, 0x1E, 3); StringCopy(gSharedMem, gMatsudaDebugMenu_StartText); StringAppend(gSharedMem, gContestMons[var].trainerName); @@ -624,7 +624,7 @@ static void sub_80AA4A8(u8 var) static void sub_80AA4F0(u8 var1, u8 var2) { - FillWindowRect_DefaultPalette(&gMenuWindow, 0, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1], gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1] + 1); + Text_FillWindowRectDefPalette(&gMenuWindow, 0, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1], gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1] + 1); Text_InitWindowAndPrintText(&gMenuWindow, gMoveNames[gContestMons[var1].moves[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]); ConvertIntToDecimalStringN(gStringVar1, gContestMons[var1].moves[var2], STR_CONV_MODE_LEADING_ZEROS, 3); Text_InitWindowAndPrintText(&gMenuWindow, gStringVar1, 0xFA + var2 * 6, gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1]); @@ -1075,7 +1075,7 @@ void unref_sub_80AB084(u8 *text) break; } } - SetUpWindowConfig(&gWindowTemplate_81E6FD8); + Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 31f232d82..7b9a579a7 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -198,7 +198,7 @@ s8 InitMoriDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 10, 19); - PrintMenuItems(1, 1, 9, gMoriDebugMenuActions); + Menu_PrintItems(1, 1, 9, gMoriDebugMenuActions); InitMenu(0, 1, 1, 9, 0, 9); gCallback_03004AE8 = MoriDebugMenuProcessInput; return 0; diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 411ff6f54..05cbfc8f7 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -132,7 +132,7 @@ void CB2_StartSoundCheckMenu(void) ResetPaletteFade(); ResetTasks(); ResetSpriteData(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); REG_WIN0H = WIN_RANGE(0, 0); @@ -1217,7 +1217,7 @@ void Task_InitCryTest(u8 taskId) struct CryRelatedStruct cryStruct, cryStruct2; u8 zero; - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); gSoundTestCryNum = 1; ResetSpriteData(); diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index e95806c74..9cece924d 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -34,7 +34,7 @@ int unref_sub_814A414(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 16, 18); - PrintMenuItems(2, 1, 8, gUnknown_0842C29C); + Menu_PrintItems(2, 1, 8, gUnknown_0842C29C); InitMenu(0, 1, 1, 8, 0, 15); gCallback_03004AE8 = sub_814A464; return 0; diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 8d68adfe9..cb0e98b71 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -305,7 +305,7 @@ void sub_80E62F8(void) FreeAllSpritePalettes(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E6DA8); + Text_LoadWindowTemplate(&gWindowTemplate_81E6DA8); break; case 2: InitMenuWindow(&gWindowTemplate_81E6D54); @@ -737,7 +737,7 @@ void sub_80E6BC0(void) } break; case 1: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: sub_80E7D6C(); @@ -785,7 +785,7 @@ void sub_80E6C84(void) gEasyChatStruct->unk24++; break; case 1: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: sub_80E91D4(4); @@ -800,7 +800,7 @@ void sub_80E6C84(void) } break; case 2: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: gSpecialVar_Result = 0; @@ -813,7 +813,7 @@ void sub_80E6C84(void) } break; case 0xFF: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sub_80E81FC(); sub_80E682C(sub_80E6AC4); break; @@ -861,7 +861,7 @@ void sub_80E6D7C(void) } break; case 1: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: gSpecialVar_Result = (sub_80E7FA8() != 0); @@ -883,7 +883,7 @@ void sub_80E6D7C(void) break; case -1: case 1: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sub_80E81FC(); if (gEasyChatStruct->unk8 == 6 && sub_80E7FA8() != 0) { diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index 6a597690a..08fd5cd18 100644 --- a/src/engine/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c @@ -45,7 +45,7 @@ static void Task_InitMenu(u8 taskId) Menu_PrintText(gSystemText_ClearAllSaveDataPrompt, 3, 15); Menu_DrawStdWindowFrame(2, 1, 8, 6); - PrintMenuItems(3, 2, 2, gMenuYesNoItems); + Menu_PrintItems(3, 2, 2, gMenuYesNoItems); InitMenu(0, 3, 2, 2, 1, 5); gTasks[taskId].func = Task_ProcessMenuInput; @@ -53,7 +53,7 @@ static void Task_InitMenu(u8 taskId) static void Task_ProcessMenuInput(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); @@ -133,7 +133,7 @@ static u8 InitClearSaveDataScreen(void) ResetTasks(); ResetSpriteData(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); diff --git a/src/engine/link.c b/src/engine/link.c index d52d0bb7a..34016d607 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -238,7 +238,7 @@ void LinkTestScreen(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); ResetBlockSend(); gLinkType = 0x1111; @@ -1236,7 +1236,7 @@ void CB2_LinkError(void) FillPalette(0, 0, 2); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - SetUpWindowConfig(&gWindowTemplate_81E7198); + Text_LoadWindowTemplate(&gWindowTemplate_81E7198); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E7198); Menu_EraseScreen(); REG_BLDALPHA = 0; @@ -1260,7 +1260,7 @@ static void CB2_PrintErrorMessage(void) switch (gMain.state) { case 0: - MenuPrint_PixelCoords(gMultiText_LinkError, 20, 56, 1); + Menu_PrintTextPixelCoords(gMultiText_LinkError, 20, 56, 1); break; case 30: case 60: diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 723886664..715570fe0 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -24,7 +24,7 @@ #include "unknown_task.h" #include "ewram.h" -#define BirchSpeechUpdateWindowText() ((u8)MenuUpdateWindowText_OverrideLineLength(24)) +#define BirchSpeechUpdateWindowText() ((u8)Menu_UpdateWindowTextOverrideLineLength(24)) extern struct PaletteFadeControl gPaletteFade; @@ -233,7 +233,7 @@ u32 InitMainMenu(u8 a1) ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); if (a1) @@ -709,7 +709,7 @@ void PrintPlayTime(void) sub_8072C74(alignedPlayTime, playTime, 48, 1); Menu_PrintText(alignedPlayTime, 22, 3); #elif defined(GERMAN) - MenuPrint_PixelCoords(gMainMenuString_Time, 124, 24, TRUE); + Menu_PrintTextPixelCoords(gMainMenuString_Time, 124, 24, TRUE); FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); sub_8072C74(alignedPlayTime, playTime, 40, 1); Menu_PrintText(alignedPlayTime, 23, 3); @@ -732,10 +732,10 @@ void PrintBadgeCount(void) #if defined(ENGLISH) Menu_PrintText(gMainMenuString_Badges, 16, 5); #elif defined(GERMAN) - MenuPrint_PixelCoords(gMainMenuString_Badges, 124, 40, TRUE); + Menu_PrintTextPixelCoords(gMainMenuString_Badges, 124, 40, TRUE); #endif ConvertIntToDecimalString(buffer, GetBadgeCount()); - MenuPrint_PixelCoords(buffer, 205, 40, 1); + Menu_PrintTextPixelCoords(buffer, 205, 40, 1); } #define tTrainerSpriteId data[2] @@ -750,7 +750,7 @@ void PrintBadgeCount(void) static void Task_NewGameSpeech1(u8 taskId) { - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); REG_WIN0H = 0; REG_WIN0V = 0; @@ -857,7 +857,7 @@ static void Task_NewGameSpeech7(u8 taskId) //Go on to next sentence after frame 95 if (gTasks[taskId].tFrameCounter > 95) { - MenuSetText(gSystemText_NewPara); + Menu_SetText(gSystemText_NewPara); gTasks[taskId].func = Task_NewGameSpeech8; } } @@ -985,14 +985,14 @@ static void Task_NewGameSpeech16(u8 taskId) switch (GenderMenuProcessInput()) { case MALE: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = MALE; Menu_EraseWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; case FEMALE: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = FEMALE; Menu_EraseWindowRect(2, 4, 8, 9); @@ -1088,7 +1088,7 @@ static void Task_NewGameSpeech21(u8 taskId) case 2: case 3: case 4: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Menu_EraseWindowRect(2, 1, 22, 12); SetPresetPlayerName(selection); @@ -1100,7 +1100,7 @@ static void Task_NewGameSpeech21(u8 taskId) gTasks[taskId].func = Task_NewGameSpeech22; break; case -1: //B button - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Menu_EraseWindowRect(2, 1, 22, 12); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu @@ -1139,7 +1139,7 @@ static void Task_NewGameSpeech24(u8 taskId) //Handle yes/no menu selection static void Task_NewGameSpeech25(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: //YES PlaySE(SE_SELECT); @@ -1373,7 +1373,7 @@ void CB_ContinueNewGameSpeechPart2() FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); if (gSaveBlock2.playerGender != MALE) @@ -1664,7 +1664,7 @@ static void CreateGenderMenu(u8 left, u8 top) Menu_DrawStdWindowFrame(left, top, left + 6, top + 5); menuLeft = left + 1; menuTop = top + 1; - PrintMenuItems(menuLeft, menuTop, 2, gUnknown_081E79B0); + Menu_PrintItems(menuLeft, menuTop, 2, gUnknown_081E79B0); InitMenu(0, menuLeft, menuTop, 2, 0, 5); } @@ -1678,9 +1678,9 @@ static void CreateNameMenu(u8 left, u8 top) Menu_DrawStdWindowFrame(left, top, left + 10, top + 11); if (gSaveBlock2.playerGender == MALE) - PrintMenuItems(left + 1, top + 1, 5, gMalePresetNames); + Menu_PrintItems(left + 1, top + 1, 5, gMalePresetNames); else - PrintMenuItems(left + 1, top + 1, 5, gFemalePresetNames); + Menu_PrintItems(left + 1, top + 1, 5, gFemalePresetNames); InitMenu(0, left + 1, top + 1, 5, 0, 9); } diff --git a/src/engine/menu.c b/src/engine/menu.c index fe88bf4e4..86e20d0eb 100644 --- a/src/engine/menu.c +++ b/src/engine/menu.c @@ -26,11 +26,12 @@ struct Menu static void MultistepInitMenuWindowInternal(const struct WindowTemplate *, u16); static void InitMenuWindowInternal(const struct WindowTemplate *, u16); -static bool8 sub_80723D4(void); +static bool8 IsGridCursorMovementClamped(void); static u8 sub_8072484(u8, u8, u8, u8, u8, u8, u32); static u8 sub_80724F4(u8, u8, u8, const struct MenuAction[], u8); static void sub_8072620(u8, u8, u8, const struct MenuAction[], u8); static void sub_8072D18(u8, u8); +static void RedrawMenuCursor(u8, u8); static struct Menu gMenu; @@ -55,7 +56,7 @@ void CloseMenu(void) Menu_EraseScreen(); sub_8064E2C(); ScriptContext2_Disable(); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); } void AppendToList(u8 *list, u8 *pindex, u32 value) @@ -149,6 +150,7 @@ void BasicInitMenuWindow(const struct WindowTemplate *winTemplate) gMenuWindowPtr->tileDataStartOffset = gMenuTextTileOffset; } +// Prints void Menu_PrintText(const u8 *str, u8 left, u8 top) { Text_InitWindowAndPrintText(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); @@ -156,7 +158,7 @@ void Menu_PrintText(const u8 *str, u8 left, u8 top) void Menu_EraseWindowRect(u8 left, u8 top, u8 right, u8 bottom) { - ZeroFillWindowRect(gMenuWindowPtr, left, top, right, bottom); + Text_EraseWindowRect(gMenuWindowPtr, left, top, right, bottom); } void Menu_BlankWindowRect(u8 left, u8 top, u8 right, u8 bottom) @@ -210,9 +212,9 @@ void MenuPrintMessageDefaultCoords(const u8 *str) Text_InitWindow8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15); } -void MenuSetText(const u8 *str) +void Menu_SetText(const u8 *str) { - sub_8002E90(gMenuWindowPtr, str); + Text_SetWindowText(gMenuWindowPtr, str); } u8 Menu_UpdateWindowText(void) @@ -271,14 +273,14 @@ s8 Menu_ProcessInput(void) { PlaySE(SE_SELECT); if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return gMenu.cursorPos; } if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return -1; } @@ -306,14 +308,14 @@ s8 Menu_ProcessInputNoWrap(void) { PlaySE(SE_SELECT); if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return gMenu.cursorPos; } if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return -1; } @@ -353,11 +355,12 @@ u8 MoveMenuCursor3(s8 delta) return gMenu.cursorPos; } -u8 MoveMenuCursor4(s8 delta) +static u8 MoveMenuCursorGridLayout(s8 delta) { + // Don't move cursor if it is clamped if (gMenu.cursorPos + delta <= gMenu.maxCursorPos) { - if (sub_80723D4() == TRUE) + if (IsGridCursorMovementClamped() == TRUE) return gMenu.cursorPos; } else @@ -379,22 +382,35 @@ u8 MoveMenuCursor4(s8 delta) return gMenu.cursorPos; } -static bool8 sub_80723D4(void) +// Returns TRUE if the cursor is on an edge and cannot move in the pressed direction +static bool8 IsGridCursorMovementClamped(void) { - if ((gMain.newKeys & DPAD_UP) && gMenu.cursorPos < gMenu.width) - return TRUE; - - if ((gMain.newKeys & DPAD_DOWN) && gMenu.cursorPos >= (gMenu.maxCursorPos + 1) - gMenu.width) - return TRUE; - - if ((gMain.newKeys & DPAD_LEFT) - && ((gMenu.cursorPos - (gMenu.cursorPos % gMenu.width)) % gMenu.width == 1 // always false - || gMenu.cursorPos == 0 - || gMenu.cursorPos % gMenu.width == 0)) - return TRUE; - - if ((gMain.newKeys & DPAD_RIGHT) && gMenu.cursorPos % gMenu.width == gMenu.width - 1) - return TRUE; + if (gMain.newKeys & DPAD_UP) + { + // is cursor on first row? + if (gMenu.cursorPos < gMenu.width) + return TRUE; + } + if (gMain.newKeys & DPAD_DOWN) + { + // is cursor on last row? + if (gMenu.cursorPos >= gMenu.maxCursorPos + 1 - gMenu.width) + return TRUE; + } + if (gMain.newKeys & DPAD_LEFT) + { + // is cursor on first column? + if ((gMenu.cursorPos - gMenu.cursorPos % gMenu.width) % gMenu.width == 1 // always false + || gMenu.cursorPos == 0 // redundant + || gMenu.cursorPos % gMenu.width == 0) + return TRUE; + } + if (gMain.newKeys & DPAD_RIGHT) + { + // is cursor on last column? + if (gMenu.cursorPos % gMenu.width == gMenu.width - 1) + return TRUE; + } return FALSE; } @@ -518,7 +534,7 @@ s8 Menu_ProcessInputGridLayout(void) if (gMain.newKeys & A_BUTTON) { if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); return Menu_GetCursorPos(); } @@ -526,44 +542,46 @@ s8 Menu_ProcessInputGridLayout(void) if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return -1; } if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor4(-gMenu.width); + // Move up one whole row + MoveMenuCursorGridLayout(-gMenu.width); return -2; } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor4(gMenu.width); + // Move down one whole column + MoveMenuCursorGridLayout(gMenu.width); return -2; } else if (gMain.newKeys & DPAD_LEFT) { PlaySE(SE_SELECT); - MoveMenuCursor4(-1); + MoveMenuCursorGridLayout(-1); return -2; } else if (gMain.newKeys & DPAD_RIGHT) { PlaySE(SE_SELECT); - MoveMenuCursor4(1); + MoveMenuCursorGridLayout(1); return -2; } return -2; } -u8 sub_807288C(u8 column) +u8 Menu_GetColumnXCoord(u8 column) { return gMenu.columnXCoords[column]; } -void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[]) +void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[]) { u8 i; @@ -571,7 +589,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m Menu_PrintText(menuItems[i].text, left, top + 2 * i); } -void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) { u8 i; @@ -581,7 +599,7 @@ void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct Men void InitYesNoMenu(u8 left, u8 top, u8 a3) { - PrintMenuItems(left + 1, top + 1, 2, gMenuYesNoItems); + Menu_PrintItems(left + 1, top + 1, 2, gMenuYesNoItems); InitMenu(0, left + 1, top + 1, 2, 0, a3); } @@ -592,14 +610,14 @@ void DisplayYesNoMenu(u8 left, u8 top, u32 a3) gMenu.menu_field_7 = a3 ? -1 : 0; } -s8 ProcessMenuInputNoWrap_(void) +s8 Menu_ProcessInputNoWrap_(void) { return Menu_ProcessInputNoWrap(); } -u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4) +u8 Menu_PrintTextPixelCoords(const u8 *text, u8 left, u16 top, u8 a4) { - return sub_8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4); + return Text_InitWindow8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4); } u8 sub_8072A18(const u8 *text, u8 left, u16 top, u8 width, u32 a5) @@ -712,7 +730,7 @@ _08072B3E:\n\ void MenuPrint_RightAligned(const u8 *str, u8 left, u8 top) { - sub_8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); + Text_InitWindow8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4) @@ -725,7 +743,7 @@ void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4) void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4) { - sub_8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4); + Text_InitWindow8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4); } u8 *sub_8072C14(u8 *a1, s32 a2, u8 a3, u8 a4) @@ -748,9 +766,9 @@ u8 sub_8072CA4(const u8 *str) return GetStringWidth(gMenuWindowPtr, str); } -u8 sub_8072CBC() +u8 Menu_GetTextWindowPaletteNum(void) { - return sub_8004E24(gMenuWindowPtr); + return Text_GetWindowPaletteNum(gMenuWindowPtr); } void Menu_GetTextColors(u8 *a1, u8 *a2, u8 *a3) @@ -758,7 +776,7 @@ void Menu_GetTextColors(u8 *a1, u8 *a2, u8 *a3) Text_GetTextColors(gMenuWindowPtr, a1, a2, a3); } -u32 MenuUpdateWindowText_OverrideLineLength(u8 lineLength) +u32 Menu_UpdateWindowTextOverrideLineLength(u8 lineLength) { return Text_UpdateWindowOverrideLineLength(gMenuWindowPtr, lineLength); } @@ -770,7 +788,7 @@ struct Window *unref_sub_8072D0C(void) static void sub_8072D18(u8 a1, u8 a2) { - sub_814A5C0(a1, 0xFFFF, 12, 11679, 8 * a2); + MenuCursor_Create814A5C0(a1, 0xFFFF, 12, 11679, 8 * a2); } u8 InitMenu(u8 cursorSubpriority, u8 left, u8 top, u8 numChoices, u8 cursorPos, u8 cursorWidth) @@ -797,9 +815,9 @@ u8 InitMenu(u8 cursorSubpriority, u8 left, u8 top, u8 numChoices, u8 cursorPos, return pos; } -void RedrawMenuCursor(u8 a1, u8 a2) +static void RedrawMenuCursor(u8 x, u8 y) { - sub_814A880((a1 + 1) * 8, 8 * a2); + MenuCursor_SetPos814A880((x + 1) * 8, 8 * y); } void unref_sub_8072DC0() @@ -817,7 +835,7 @@ void sub_8072DDC(u8 a1) sub_8072DCC(8 * a1); } -void HandleDestroyMenuCursors(void) +void Menu_DestroyCursor(void) { DestroyMenuCursor(); } diff --git a/src/engine/menu_cursor.c b/src/engine/menu_cursor.c index 960d3cc87..35116d40b 100644 --- a/src/engine/menu_cursor.c +++ b/src/engine/menu_cursor.c @@ -3,13 +3,13 @@ #include "palette.h" #include "sprite.h" -EWRAM_DATA u16 gUnknown_0203A360[0x10] = {}; -EWRAM_DATA struct Subsprite gMenuCursorSubsprites[10] = {0}; -EWRAM_DATA u8 gUnknown_0203A3D0 = 0; -EWRAM_DATA u8 gUnknown_0203A3D1 = 0; -EWRAM_DATA u8 gUnknown_0203A3D2 = 0; -EWRAM_DATA u8 gUnknown_0203A3D3 = 0; -EWRAM_DATA u8 gUnknown_0203A3D4 = 0; +EWRAM_DATA static u16 gUnknown_0203A360[0x10] = {}; +EWRAM_DATA static struct Subsprite gMenuCursorSubsprites[10] = {0}; +EWRAM_DATA static u8 gUnknown_0203A3D0 = 0; +EWRAM_DATA static u8 gUnknown_0203A3D1 = 0; +EWRAM_DATA static u8 gUnknown_0203A3D2 = 0; +EWRAM_DATA static u8 gUnknown_0203A3D3 = 0; +EWRAM_DATA static u8 gUnknown_0203A3D4 = 0; #if ENGLISH #include "../src/data/menu_cursor_en.h" @@ -26,7 +26,7 @@ void sub_814A590(void) gUnknown_0203A3D4 = 0; } -u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) +u8 MenuCursor_Create814A5C0(u8 subpriority, u16 paletteTag, u8 a3, u16 a4, u8 a5) { int v9; struct Sprite *v10; @@ -35,34 +35,34 @@ u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) DestroyMenuCursor(); v9 = 1; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) { gUnknown_0203A360[a3 & 0xF] = a4; if (LoadSpritePalette(&gUnknown_0842F240) != 0xFF) { - a2 = 0xFFF0; + paletteTag = 0xFFF0; v9 = 0; } } LoadSpriteSheetDeferred(&gUnknown_0842F140[a3 & 0xF]); - gUnknown_0203A3D0 = CreateSprite(&gSpriteTemplate_842F250[v9], 0, 0xA0, a1); - gUnknown_0203A3D1 = CreateSprite(&gSpriteTemplate_842F250[2], 0, 0xA0, a1); + gUnknown_0203A3D0 = CreateSprite(&gSpriteTemplate_842F250[v9], 0, 160, subpriority); + gUnknown_0203A3D1 = CreateSprite(&gSpriteTemplate_842F250[2], 0, 160, subpriority); if (gUnknown_0203A3D0 != 0x40) { v10 = &gSprites[gUnknown_0203A3D0]; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) v10->oam.paletteNum = 0; else - v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); + v10->oam.paletteNum = IndexOfSpritePaletteTag(paletteTag); } if (gUnknown_0203A3D1 != 0x40) { v10 = &gSprites[gUnknown_0203A3D1]; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) v10->oam.paletteNum = 0; else - v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); + v10->oam.paletteNum = IndexOfSpritePaletteTag(paletteTag); if (!(REG_DISPCNT & (DISPCNT_WIN0_ON | DISPCNT_WIN1_ON))) *(u8 *)(REG_ADDR_WINOUT) |= 0x1F; @@ -75,12 +75,13 @@ u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) return gUnknown_0203A3D0; } -u8 sub_814A758(u8 a1, u8 a2, u8 a3, u8 a4) +// unused +u8 sub_814A758(u8 subpriority, u8 a2, u8 a3, u8 a4) { u8 result; struct Sprite *spr; - result = sub_814A5C0(a1, 0, a3, 0, a4); + result = MenuCursor_Create814A5C0(subpriority, 0, a3, 0, a4); if (result != 0x40) { spr = &gSprites[gUnknown_0203A3D0]; @@ -128,7 +129,7 @@ void DestroyMenuCursor(void) return; } -void sub_814A880(u8 a1, u8 a2) +void MenuCursor_SetPos814A880(u8 a1, u8 a2) { struct Sprite *spr; @@ -685,49 +686,48 @@ void unref_sub_814ABE4(int a1) return; } -u8 CreateBlendedOutlineCursor(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) +u8 CreateBlendedOutlineCursor(u8 subpriority, u16 paletteTag, u8 a3, u16 a4, u8 a5) { int v8; struct Sprite *spr; - u8 var1 = gUnknown_0203A3D2; - if (var1 != 0x40) - sub_814AD44(); + if (gUnknown_0203A3D2 != 0x40) + MenuCursor_Destroy814AD44(); v8 = 1; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) { gUnknown_0203A360[a3 & 0xF] = a4; if (LoadSpritePalette(&gUnknown_0842F248) != 0xFF ) { - a2 = 0xFFF1; + paletteTag = 0xFFF1; v8 = 0; } } LoadSpriteSheetDeferred(&gUnknown_0842F1C0[a3 & 0xF]); #if ENGLISH - gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 160, a1); + gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 160, subpriority); #elif GERMAN - gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 161, a1); + gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 161, subpriority); #endif if (gUnknown_0203A3D2 != 0x40) { spr = &gSprites[gUnknown_0203A3D2]; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) spr->oam.paletteNum = 0; else - spr->oam.paletteNum = IndexOfSpritePaletteTag(a2); + spr->oam.paletteNum = IndexOfSpritePaletteTag(paletteTag); } sub_814ADF4(a5); return gUnknown_0203A3D2; } -void sub_814AD44(void) +void MenuCursor_Destroy814AD44(void) { if (gUnknown_0203A3D2 != 0x40) { @@ -738,7 +738,7 @@ void sub_814AD44(void) return; } -void sub_814AD7C(u8 a1, u8 a2) +void MenuCursor_SetPos814AD7C(u8 a1, u8 a2) { struct Sprite *spr; if (gUnknown_0203A3D2 != 0x40) diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 278760233..b7b7c047e 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -45,7 +45,7 @@ void CB2_InitMysteryEventMenu(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; diff --git a/src/engine/name_string_util.c b/src/engine/name_string_util.c index f1a935453..32e9358e1 100644 --- a/src/engine/name_string_util.c +++ b/src/engine/name_string_util.c @@ -7,7 +7,7 @@ void PadNameString(u8 *a1, u8 a2) { u8 i; - StripExtCtrlCodes(a1); + Text_StripExtCtrlCodes(a1); i = StringLength(a1); if (a2 == 0xFC) @@ -36,5 +36,5 @@ void SanitizeNameString(u8 *a1) if (StringLength(a1) < 6) ConvertInternationalString(a1, 1); else - StripExtCtrlCodes(a1); + Text_StripExtCtrlCodes(a1); } diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index 880187dc0..eddfdeda5 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -325,7 +325,7 @@ static void NamingScreen_Init(void) static void NamingScreen_SetUpWindow(void) { - SetUpWindowConfig(&gWindowTemplate_81E6E88); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E88); InitMenuWindow(&gWindowTemplate_81E6E88); } diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index 2b9412e45..868830880 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -116,7 +116,7 @@ void CB2_InitOptionMenu(void) gMain.state++; break; case 2: - SetUpWindowConfig(&gWindowTemplate_81E71B4); + Text_LoadWindowTemplate(&gWindowTemplate_81E71B4); gMain.state++; break; case 3: @@ -313,7 +313,7 @@ static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style) dst[2] = style; dst[i] = EOS; - MenuPrint_PixelCoords(dst, x, y, 1); + Menu_PrintTextPixelCoords(dst, x, y, 1); } static u8 TextSpeed_ProcessInput(u8 selection) diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 37b1c767e..6e9efd342 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -443,7 +443,7 @@ void CB2_InitResetRtcScreen(void) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); REG_DISPCNT = 4352; SetVBlankCallback(VBlankCB_ResetRtcScreen); diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index 4609f3fd8..64b84a2f7 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -120,7 +120,7 @@ static void CB2_SaveFailedScreen(void) ResetPaletteFade(); LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_DrawStdWindowFrame(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // message window diff --git a/src/engine/text.c b/src/engine/text.c index 15a535ff0..fe18a6d79 100644 --- a/src/engine/text.c +++ b/src/engine/text.c @@ -97,7 +97,7 @@ static void AddToCursorX(struct Window *, u8); static void AddToCursorY(struct Window *, u8); static void ClipLeft(struct Window *); static void ClipRight(struct Window *); -static void InitColors(struct Window *); +static void SetWindowDefaultColors(struct Window *); static void SetWindowBackgroundColor(struct Window *, u8); static void SetWindowShadowColor(struct Window *, u8); static void SetWindowForegroundColor(struct Window *, u8); @@ -786,7 +786,7 @@ const struct WindowTemplate gWindowTemplate_81E6DA8 = BG_SCREEN_ADDR(11), // tilemap }; -const struct WindowTemplate WindowConfig_TrainerCard_Back_Values = +const struct WindowTemplate gWindowTemplate_TrainerCard_Back_Values = { 0, // BG number 2, // BG character base block @@ -807,7 +807,7 @@ const struct WindowTemplate WindowConfig_TrainerCard_Back_Values = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels = +const struct WindowTemplate gWindowTemplate_TrainerCard_Back_Labels = { 0, // BG number 2, // BG character base block @@ -1752,7 +1752,7 @@ void LoadFontDefaultPalette(const struct WindowTemplate *winTemplate) LoadPalette(gFontDefaultPalette, 16 * winTemplate->paletteNum, 32); } -void SetUpWindowConfig(const struct WindowTemplate *winTemplate) +void Text_LoadWindowTemplate(const struct WindowTemplate *winTemplate) { UpdateBGRegs(winTemplate); ClearBGMem(winTemplate); @@ -1952,7 +1952,7 @@ void Text_InitWindowWithTemplate(struct Window *win, const struct WindowTemplate win->height = winTemplate->height; win->tileData = winTemplate->tileData; win->tilemap = winTemplate->tilemap; - InitColors(win); + SetWindowDefaultColors(win); SetWindowBackgroundColor(win, winTemplate->backgroundColor); SetWindowShadowColor(win, winTemplate->shadowColor); SetWindowForegroundColor(win, winTemplate->foregroundColor); @@ -1986,7 +1986,7 @@ void Text_InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset win->downArrowCounter = 0; win->tileData = winTemplate->tileData; win->tilemap = winTemplate->tilemap; - InitColors(win); + SetWindowDefaultColors(win); SetWindowBackgroundColor(win, winTemplate->backgroundColor); SetWindowShadowColor(win, winTemplate->shadowColor); SetWindowForegroundColor(win, winTemplate->foregroundColor); @@ -2007,7 +2007,7 @@ void Text_InitWindow8002E4C(struct Window *win, const u8 *text, u16 tileDataStar ClipLeft(win); } -void sub_8002E90(struct Window *win, const u8 *text) +void Text_SetWindowText(struct Window *win, const u8 *text) { win->state = WIN_STATE_NORMAL; win->text = text; @@ -2364,7 +2364,7 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to void sub_80034D4(u8 *tileData, const u8 *text) { - sub_8004E3C(&gWindowTemplate_81E6C74, tileData, text); + Text_InitWindow8004E3C(&gWindowTemplate_81E6C74, tileData, text); } u8 sub_80034EC(u8 *str) @@ -2905,7 +2905,7 @@ static void ClipRight(struct Window *win) } } -static void InitColors(struct Window *win) +static void SetWindowDefaultColors(struct Window *win) { u32 i; @@ -3334,7 +3334,7 @@ void DrawWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 } // Fills the whole window area with tilemapEntry -void FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) +void Text_FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) { u16 *buffer = &win->tilemap[top * 32]; while (top++ <= bottom) @@ -3346,20 +3346,20 @@ void FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 ri } } -void FillWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom) +void Text_FillWindowRectDefPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom) { - FillWindowRect(win, (win->paletteNum << 12) | tileNum, left, top, right, bottom); + Text_FillWindowRect(win, (win->paletteNum << 12) | tileNum, left, top, right, bottom); } -void ZeroFillWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) +void Text_EraseWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) { - FillWindowRect_DefaultPalette(win, 0, left, top, right, bottom); + Text_FillWindowRectDefPalette(win, 0, left, top, right, bottom); } void Text_BlankWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) { u16 tileNum = GetBlankTileNum(win); - FillWindowRect_DefaultPalette(win, tileNum, left, top, right, bottom); + Text_FillWindowRectDefPalette(win, tileNum, left, top, right, bottom); } static u16 GetBlankTileNum(struct Window *win) @@ -3666,13 +3666,13 @@ u8 GetStringWidth(struct Window *win, const u8 *s) return width; } -u8 sub_8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) +u8 Text_InitWindow8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) { Text_InitWindow8002E4C(win, text, tileDataStartOffset, left, top, a6); return Text_PrintWindow8002F44(win); } -u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) +u8 Text_InitWindow8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { u8 width = GetStringWidth(win, text); Text_InitWindow(win, text, tileDataStartOffset, left - ((u32)(width + 7) >> 3), top); @@ -3684,7 +3684,7 @@ u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 l return Text_PrintWindow8002F44(win); } -u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6) +u8 Text_InitWindow8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6) { register u32 val asm("r5") = (u8)((a6 >> 1) - (GetStringWidth(win, text) >> 1)); left += (val >> 3); @@ -3694,7 +3694,7 @@ u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 l return Text_PrintWindow8002F44(win); } -u8 sub_8004E24(struct Window *win) +u8 Text_GetWindowPaletteNum(struct Window *win) { return win->paletteNum; } @@ -3706,7 +3706,7 @@ void Text_GetTextColors(struct Window *win, u8 *foreground, u8 *background, u8 * *shadow = win->shadowColor; } -void sub_8004E3C(const struct WindowTemplate *winTemplate, u8 *tileData, const u8 *text) +void Text_InitWindow8004E3C(const struct WindowTemplate *winTemplate, u8 *tileData, const u8 *text) { sTempWindow.template = winTemplate; Text_InitWindow(&sTempWindow, text, 0, 0, 0); @@ -3727,11 +3727,11 @@ void ConvertInternationalString(u8 *s, u8 language) { u8 i; - StripExtCtrlCodes(s); + Text_StripExtCtrlCodes(s); i = StringLength(s); - s[i++] = 0xFC; + s[i++] = EXT_CTRL_CODE_BEGIN; s[i++] = 22; - s[i++] = 0xFF; + s[i++] = EOS; i--; @@ -3741,18 +3741,18 @@ void ConvertInternationalString(u8 *s, u8 language) i--; } - s[0] = 0xFC; + s[0] = EXT_CTRL_CODE_BEGIN; s[1] = 21; } } -void StripExtCtrlCodes(u8 *str) +void Text_StripExtCtrlCodes(u8 *str) { u16 srcIndex = 0; u16 destIndex = 0; - while (str[srcIndex] != 0xFF) + while (str[srcIndex] != EOS) { - if (str[srcIndex] == 0xFC) + if (str[srcIndex] == EXT_CTRL_CODE_BEGIN) { srcIndex++; srcIndex += GetExtCtrlCodeLength(str[srcIndex]); @@ -3762,12 +3762,12 @@ void StripExtCtrlCodes(u8 *str) str[destIndex++] = str[srcIndex++]; } } - str[destIndex] = 0xFF; + str[destIndex] = EOS; } static const u8 *SkipExtCtrlCode(const u8 *s) { - while (*s == 0xFC) + while (*s == EXT_CTRL_CODE_BEGIN) { s++; s += GetExtCtrlCodeLength(*s); diff --git a/src/engine/trade.c b/src/engine/trade.c index 30e22b8d5..3a14adaca 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1088,7 +1088,7 @@ static void sub_8047EC0(void) sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); InitMenuWindow(&gWindowTemplate_81E6CE4); - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); @@ -1157,7 +1157,7 @@ static void sub_8047EC0(void) break; case 6: CalculateEnemyPartyCount(); - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, 0, 0, 29, 19); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, 0, 0, 29, 19); REG_DISPCNT = 0; gUnknown_03004824->partyCounts[0] = gPlayerPartyCount; gUnknown_03004824->partyCounts[1] = gEnemyPartyCount; @@ -1268,7 +1268,7 @@ static void sub_80484F4(void) sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); InitMenuWindow(&gWindowTemplate_81E6CE4); - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); @@ -2097,7 +2097,7 @@ static void sub_8049680(void) if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) { TextWindow_DrawStdFrame(&gUnknown_03004824->window, 18, 14, 28, 19); - PrintMenuItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320); + Menu_PrintItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320); InitMenu(0, 19, 15, 2, 0, 9); gUnknown_03004824->unk_007b = 1; } @@ -2126,7 +2126,7 @@ static void sub_8049680(void) static void sub_8049804(void) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sub_804A80C(); gUnknown_03004824->unk_007b = 0; gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE; @@ -2464,8 +2464,8 @@ static void sub_8049ED4(u8 a0) StoreSpriteCallbackInData(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], sub_809D62C); gUnknown_03004824->unk_0080[a0] ++; sub_8078A34(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]]); - HandleDestroyMenuCursors(); - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[whichParty][0], 0, gUnknown_0820C330[whichParty][1], 19); + Menu_DestroyCursor(); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[whichParty][0], 0, gUnknown_0820C330[whichParty][1], 19); sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * a0, 0, gTradePartyBoxTilemap, 15, 17, 0); if (whichParty == 0) { @@ -2692,7 +2692,7 @@ static void sub_8049ED4(u8 a0) "\tlsls r0, 2\n" "\tadds r0, r7\n" "\tbl sub_8078A34\n" - "\tbl HandleDestroyMenuCursors\n" + "\tbl Menu_DestroyCursor\n" "\tldr r3, _0804A09C @ =gUnknown_03004824\n" "\tldr r0, [r3]\n" "\tadds r0, 0x4\n" @@ -2708,7 +2708,7 @@ static void sub_8049ED4(u8 a0) "\tstr r1, [sp, 0x4]\n" "\tmovs r1, 0\n" "\tmovs r3, 0\n" - "\tbl FillWindowRect_DefaultPalette\n" + "\tbl Text_FillWindowRectDefPalette\n" "\tldr r1, _0804A09C @ =gUnknown_03004824\n" "\tldr r0, [r1]\n" "\tadds r0, 0xC8\n" @@ -3337,7 +3337,7 @@ static void sub_804A740(u8 whichParty) static void sub_804A80C(void) { - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); sub_804A41C(1); } @@ -3345,7 +3345,7 @@ static void sub_804A840(u8 whichParty) { if (whichParty == 0) { - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[0][0], 0, gUnknown_0820C330[0][1], 19); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[0][0], 0, gUnknown_0820C330[0][1], 19); sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 0, 0, gTradePartyBoxTilemap, 15, 17, 0); sub_804A6DC(0); sub_804A41C(0); @@ -3354,8 +3354,8 @@ static void sub_804A840(u8 whichParty) } else { - HandleDestroyMenuCursors(); - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); + Menu_DestroyCursor(); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15, 0, gTradePartyBoxTilemap, 15, 17, 0); sub_804A6DC(1); sub_804A41C(1); @@ -3806,7 +3806,7 @@ static void sub_804AFB8(const struct WindowTemplate *windowConfig, u8 *dest, con tileBuffer = gTileBuffer; CpuFill16(0, tileBuffer, size * 0x80); CpuFill16(0, tileBuffer + windowConfig->width * 0x20, size * 0x80); - sub_8004E3C(windowConfig, tileBuffer, src); + Text_InitWindow8004E3C(windowConfig, tileBuffer, src); for (i = 0; i < size; i ++) { CpuCopy16(&tileBuffer[32 * (i * 4)], &dest[32 * (i * 8)], 0x80); @@ -4028,7 +4028,7 @@ static void sub_804B41C(void) FreeAllSpritePalettes(); SetVBlankCallback(sub_804B210); sub_804B228(); - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); @@ -4184,7 +4184,7 @@ static __attribute__((naked)) void sub_804B41C(void) "\tbl sub_804B228\n" "\tldr r4, _0804B57C @ =gWindowTemplate_81E6F84\n" "\tadds r0, r4, 0\n" - "\tbl SetUpWindowConfig\n" + "\tbl Text_LoadWindowTemplate\n" "\tldr r0, [r6]\n" "\tadds r0, 0x4\n" "\tadds r1, r4, 0\n" @@ -4531,7 +4531,7 @@ static void sub_804B790(void) FreeAllSpritePalettes(); SetVBlankCallback(sub_804B210); sub_804B228(); - SetUpWindowConfig(&gWindowTemplate_81E717C); + Text_LoadWindowTemplate(&gWindowTemplate_81E717C); Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E717C); gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); @@ -4852,7 +4852,7 @@ static bool8 sub_804C29C(void) { gUnknown_03004828->unk_0102 = sub_8047580(gUnknown_03004828->pokePicSpriteIdxs[0], gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.paletteNum, 0x78, 0x20, 0x2, 0x1, 0x14, 0xfffff); gUnknown_03004828->unk_00c4 ++; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_ByeBye); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); } @@ -5199,7 +5199,7 @@ static bool8 sub_804C29C(void) break; case 67: REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_SentOverPoke); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c4 ++; @@ -5213,7 +5213,7 @@ static bool8 sub_804C29C(void) if (gUnknown_03004828->unk_00c0 == 0xf0) { gUnknown_03004828->unk_00c4 ++; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_TakeGoodCare); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c0 = 0; @@ -5536,7 +5536,7 @@ static void sub_804DC88(void) case 0: gUnknown_03004828 = &ewram_2010000.unk_0f000; gMain.state ++; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gOtherText_LinkStandby2); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); break; @@ -5564,7 +5564,7 @@ static void sub_804DC88(void) break; case 2: gMain.state = 50; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15); break; case 50: diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index da9dd7179..70942fc29 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -565,8 +565,8 @@ void sub_80937A4() void sub_80937BC() { - SetUpWindowConfig(&WindowConfig_TrainerCard_Back_Values); - MultistepInitMenuWindowBegin(&WindowConfig_TrainerCard_Back_Values); + Text_LoadWindowTemplate(&gWindowTemplate_TrainerCard_Back_Values); + MultistepInitMenuWindowBegin(&gWindowTemplate_TrainerCard_Back_Values); } static void sub_80937D8() @@ -678,7 +678,7 @@ bool8 sub_8093980(struct Task *task) static void sub_80939A4(void) { CreateTask(sub_80939DC, 0); - BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values); + BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); } static void sub_80939C0(void) @@ -1317,7 +1317,7 @@ static void sub_8094140(void) { u8 *buffer; - BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values); + BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); buffer = gStringVar1; StringCopy(buffer, ewram0_2.var_64.playerName); @@ -1332,7 +1332,7 @@ static void sub_8094140(void) static void sub_8094188(void) { - BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values); + BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); TrainerCard_Back_PrintName(); TrainerCard_Back_PrintHallOfFameTime_Label(); TrainerCard_Back_PrintLinkBattlesLabel(); @@ -1341,7 +1341,7 @@ static void sub_8094188(void) TrainerCard_Back_PrintLinkPokeblocks_Label(); TrainerCard_Back_PrintPokemonTrades_Label(); - BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Labels); + BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Labels); TrainerCard_Back_PrintHallOfFameTime(); TrainerCard_Back_PrintLinkBattles(); TrainerCard_Back_PrintBattleTower(); @@ -1489,10 +1489,10 @@ static void TrainerCard_Back_PrintBattleTower(void) if (ewram0_2.var_a != 0) { sub_8072C44(buffer, ewram0_2.var_64.battleTowerWins, 24, 1); - MenuPrint_PixelCoords(buffer, 112, 120, 0); + Menu_PrintTextPixelCoords(buffer, 112, 120, 0); sub_8072C44(buffer, ewram0_2.var_64.battleTowerLosses, 24, 1); - MenuPrint_PixelCoords(buffer, 149, 120, 0); + Menu_PrintTextPixelCoords(buffer, 149, 120, 0); } } diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 75e481f84..a05d9bf87 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -109,7 +109,7 @@ static bool8 sub_8146058(void) gMain.state += 1; break; case 3: - SetUpWindowConfig(&gWindowTemplate_81E6E18); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E18); gMain.state += 1; break; case 4: diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 6a9c23c66..3ba04e489 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -462,7 +462,7 @@ static void BattleTowerEntryMenuCallback_Enter(u8 taskId) } PlaySE(SE_HAZURE); Menu_EraseWindowRect(20, 10, 29, 19); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sub_806D5A4(); sub_806E834(gOtherText_NoMoreThreePoke, 1); gTasks[taskId].func = sub_8122728; @@ -476,7 +476,7 @@ static void sub_8122728(u8 taskId) if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) { Menu_EraseWindowRect(0, 14, 29, 19); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); BattleTowerEntryMenuCallback_Exit(taskId); } } @@ -516,7 +516,7 @@ static void BattleTowerEntryMenuCallback_NoEntry(u8 taskId) static void sub_81227FC(u8 taskId) { Menu_EraseWindowRect(20, 10, 29, 19); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PrintPartyMenuPromptText(0, 0); gTasks[taskId].func = HandleBattleTowerPartyMenu; } @@ -897,7 +897,7 @@ static void DaycareStorageMenuCallback_Exit(u8 taskId) { PlaySE(SE_SELECT); Menu_EraseWindowRect(20, 10, 29, 19); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PrintPartyMenuPromptText(15, 0); gTasks[taskId].func = HandleDaycarePartyMenu; } diff --git a/src/field/daycare.c b/src/field/daycare.c index 7814a3b24..5811461ae 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -1756,7 +1756,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gLastFieldPokeMenuOpened = gSpecialVar_Result = gTasks[taskId].data[0]; DestroyTask(taskId); @@ -1765,7 +1765,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) } else if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); gLastFieldPokeMenuOpened = gSpecialVar_Result = 2; DestroyTask(taskId); Menu_EraseWindowRect(15, 6, 29, 13); @@ -1780,7 +1780,7 @@ void ShowDaycareLevelMenu(void) GetDaycareLevelMenuText(&gSaveBlock1.daycare, buffer); Menu_PrintText(buffer, 16, 7); GetDaycareLevelMenuLevelText(&gSaveBlock1.daycare, buffer); - MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE); + Menu_PrintTextPixelCoords(buffer, 0xce, 0x38, TRUE); InitMenu(0, 16, 7, 3, 0, 13); CreateTask(HandleDaycareLevelMenuInput, 3); } diff --git a/src/field/decoration.c b/src/field/decoration.c index a91b2e37b..a6c0bd21f 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1434,7 +1434,7 @@ void sub_80FE1DC(void) { sub_80FE2B4(); Menu_DrawStdWindowFrame(0, 0, 10, 9); - PrintMenuItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604); + Menu_PrintItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604); InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9); } @@ -1516,7 +1516,7 @@ void sub_80FE394(void) void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 10, 9); Menu_BlankWindowRect(2, 15, 27, 18); FreeSpritePaletteByTag(6); @@ -1546,7 +1546,7 @@ void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCateg { u8 *strptr; u8 v0; - v0 = sub_8072CBC(); + v0 = Menu_GetTextWindowPaletteNum(); // PALETTE {palIdx} strptr = gStringVar4; strptr[0] = EXT_CTRL_CODE_BEGIN; @@ -1583,7 +1583,7 @@ void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings void sub_80FE5AC(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80FE528(taskId); InitMenu(0, 1, 1, 9, gUnknown_020388F6, 13); @@ -1620,7 +1620,7 @@ void sub_80FE604(u8 taskId) gTasks[taskId].func = sub_80FE868; } else { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 14, 19); DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE418, 0); } @@ -1649,7 +1649,7 @@ void sub_80FE728(u8 taskId) void sub_80FE758(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 14, 19); if (gTasks[taskId].data[11] != 2) { @@ -1677,7 +1677,7 @@ void sub_80FE7D4(u8 *dest, u8 decClass) void sub_80FE7EC(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80FEC94(taskId); @@ -1757,7 +1757,7 @@ void sub_80FE948(u8 taskId) } if (gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gUnknown_020388F5 = gUnknown_020388F2 + gUnknown_020388F4; if (gUnknown_020388F5 == gUnknown_020388D5) @@ -1769,7 +1769,7 @@ void sub_80FE948(u8 taskId) } } else if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gUnknown_083EC634[gTasks[taskId].data[11]].noFunc(taskId); } @@ -2005,7 +2005,7 @@ void sub_80FEF74(void) sub_80F9520(gUnknown_020388F7, 8); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 14, 19); } @@ -2035,7 +2035,7 @@ void sub_80FEFF4(u8 taskId) void sub_80FF034(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 14, 19); sub_80FE5AC(taskId); } @@ -3790,7 +3790,7 @@ void sub_8100E70(u8 taskId) data[2] = 1; data[6] = 1; data[5] = 1; - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); } break; case 1: diff --git a/src/field/diploma.c b/src/field/diploma.c index 8481589cb..7028eec02 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -68,7 +68,7 @@ void CB2_ShowDiploma(void) ResetPaletteFade(); FreeAllSpritePalettes(); LoadPalette(gDiplomaPalettes, 0, 64); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); DisplayDiplomaText(); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 57d9072b1..5ff89574b 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -2434,7 +2434,7 @@ void sub_8088380(struct Task *task) IntrCallback callback; LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback); SetVBlankCallback(callback); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); @@ -2557,7 +2557,7 @@ void sub_808862C(struct Task *task) CpuFill32(0, (void *)VRAM + bg0cnt, 0x800); LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback); SetVBlankCallback(intrCallback); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); diff --git a/src/field/field_region_map.c b/src/field/field_region_map.c index afbc25226..54091459f 100644 --- a/src/field/field_region_map.c +++ b/src/field/field_region_map.c @@ -50,7 +50,7 @@ void CB2_FieldInitRegionMap(void) InitRegionMap((void *)&ewram0_5.unk8, 0); CreateRegionMapPlayerIcon(0, 0); CreateRegionMapCursor(1, 1); - SetUpWindowConfig(&gWindowTemplate_81E709C); + Text_LoadWindowTemplate(&gWindowTemplate_81E709C); InitMenuWindow(&gWindowTemplate_81E709C); Menu_EraseScreen(); REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 589f96844..aade7cffd 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -1573,7 +1573,7 @@ void sub_810F118(u8 taskId) } if (gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); gSpecialVar_Result = gUnknown_0203925B; PlaySE(SE_SELECT); sub_810EEDC(); @@ -1582,7 +1582,7 @@ void sub_810F118(u8 taskId) } if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); gSpecialVar_Result = 0x7f; PlaySE(SE_SELECT); sub_810EEDC(); diff --git a/src/field/item_menu.c b/src/field/item_menu.c index f58f42fb9..2be5f1e1d 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -424,7 +424,7 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 7: - SetUpWindowConfig(&gWindowTemplate_81E6DFC); + Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); gMain.state++; break; case 8: @@ -1552,11 +1552,11 @@ static void ItemListMenu_ChangeDescription(s16 itemId, int b) if (b == 0) { Menu_EraseWindowRect(0, 13, 13, 20); - MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); + Menu_PrintTextPixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); } else if (b == 1) { - MenuPrint_PixelCoords(gUnknown_0840E740[sReturnLocation], 4, 0x78, 0); + Menu_PrintTextPixelCoords(gUnknown_0840E740[sReturnLocation], 4, 0x78, 0); } } else @@ -1564,7 +1564,7 @@ static void ItemListMenu_ChangeDescription(s16 itemId, int b) if (b == 0) Menu_EraseWindowRect(0, 13, 13, 20); if (ItemId_CopyDescription(description, itemId, b)) - MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0); + Menu_PrintTextPixelCoords(description, 4, 104 + b * 16, 0); } } @@ -1604,7 +1604,7 @@ static void sub_80A4A98(const u8 *text, u32 line) if (line == 0) Menu_EraseWindowRect(0, 13, 13, 20); if (CopyTextLine(buffer, text, line)) - MenuPrint_PixelCoords(buffer, 4, 104 + line * 16, 0); + Menu_PrintTextPixelCoords(buffer, 4, 104 + line * 16, 0); } static void sub_80A4ADC(u8 taskId) @@ -3559,7 +3559,7 @@ static void ItemListMenu_InitMenu(void) static void sub_80A73C0(void) { - sub_814AD7C(0x70, gBagPocketScrollStates[sCurrentBagPocket].cursorPos * 16 + 16); + MenuCursor_SetPos814AD7C(0x70, gBagPocketScrollStates[sCurrentBagPocket].cursorPos * 16 + 16); } static void sub_80A73F0(void) @@ -3569,8 +3569,8 @@ static void sub_80A73F0(void) static void sub_80A73FC(void) { - HandleDestroyMenuCursors(); - sub_814AD44(); + Menu_DestroyCursor(); + MenuCursor_Destroy814AD44(); } static void sub_80A740C(void) diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index c3a73e18b..0a841eed1 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -1259,7 +1259,7 @@ static void Task_StoryListMenu(u8 taskId) gSpecialVar_Result = 1; gUnknown_03000748 = selection; } - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 25, 12); DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 44b24eed6..76f0d367e 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -160,7 +160,7 @@ void DisplayItemMessageOnField(u8 taskId, const u8 *str, TaskFunc callback, u16 static void Task_CallYesOrNoCallback(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); diff --git a/src/field/money.c b/src/field/money.c index 4ab4de51c..b85ed8009 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -148,7 +148,7 @@ void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y) else { int xPlusOne = x + 1; - MenuPrint_PixelCoords(buffer, (xPlusOne + size) * 8 - stringWidth, y * 8, 1); + Menu_PrintTextPixelCoords(buffer, (xPlusOne + size) * 8 - stringWidth, y * 8, 1); } } diff --git a/src/field/overworld.c b/src/field/overworld.c index e91c8ae56..9fab20876 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1456,7 +1456,7 @@ bool32 sub_805483C(u8 *a1) case 4: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; @@ -1522,7 +1522,7 @@ bool32 sub_805493C(u8 *a1, u32 a2) case 4: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; @@ -1612,7 +1612,7 @@ bool32 sub_8054A9C(u8 *a1) case 3: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; @@ -1695,7 +1695,7 @@ void sub_8054C2C(void) { sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); mapdata_load_assets_to_gpu_and_full_redraw(); } diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 73a32d070..9cad5bd73 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -679,7 +679,7 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 7: - SetUpWindowConfig(&gWindowTemplate_81E6C90); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C90); gMain.state++; break; case 8: @@ -2706,7 +2706,7 @@ void sub_806D5B8(u8 monIndex) u8 right = gUnknown_08376948[IsDoubleBattle()][monIndex].right; u8 bottom = gUnknown_08376948[IsDoubleBattle()][monIndex].bottom; - ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom); + Text_EraseWindowRect(&gUnknown_03004210, left, top, right, bottom); var1 = 0; CpuFastSet(&var1, OBJ_VRAM1 + monIndex * 0x400, 0x1000100); @@ -2720,7 +2720,7 @@ void sub_806D668(u8 monIndex) u8 right = gUnknown_08376978[IsDoubleBattle()][monIndex].right; u8 bottom = gUnknown_08376978[IsDoubleBattle()][monIndex].bottom; - ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom); + Text_EraseWindowRect(&gUnknown_03004210, left, top, right, bottom); var1 = 0; CpuFastSet(&var1, OBJ_VRAM1 + 0x300 + monIndex * 0x400, 0x1000040); @@ -3313,7 +3313,7 @@ void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer) { u32 var1 = 0; CpuFastSet(&var1, gTileBuffer, 0x1000100); - sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBuffer, nameBuffer); + Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBuffer, nameBuffer); CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128); } @@ -3423,7 +3423,7 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level) var1 = 0; CpuFastSet(&var1, gUnknown_02039460, 0x1000020); - sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32); } @@ -3517,7 +3517,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) var = 0; CpuFastSet(&var, gUnknown_02039460, 0x1000040); - sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64); } @@ -3668,7 +3668,7 @@ void ClosePartyPopupMenu(u8 index, const struct PartyPopupMenu *menu) SetPartyPopupMenuOffsets(index, &left, &top, menu); Menu_EraseWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); } TaskFunc PartyMenuGetPopupMenuFunc(u8 menuIndex, const struct PartyPopupMenu *menus, const struct MenuAction2 *menuActions, u8 itemIndex) @@ -3788,7 +3788,7 @@ void party_menu_link_mon_held_item_object(u8 taskId) void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -3925,7 +3925,7 @@ void DoTakeMail(u8 taskId, TaskFunc func) void Task_LoseMailMessage(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -3964,7 +3964,7 @@ void Task_ConfirmLoseMailMessage(u8 taskId) void Task_TakeHeldMail(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -4126,7 +4126,7 @@ void sub_806F358(u8 taskId) void sub_806F390(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -4224,7 +4224,7 @@ void StopTryingToTeachMove_806F67C(u8 taskId) void StopTryingToTeachMove_806F6B4(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -4713,7 +4713,7 @@ void DoPPRecoveryItemEffect(u8 taskId, u16 item, TaskFunc c) void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(19, 10, 29, 19); sub_806D5A4(); gTasks[taskId].data[11] = Menu_GetCursorPos(); @@ -4722,7 +4722,7 @@ void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) void ItemUseMoveMenu_HandleCancel(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(19, 10, 29, 19); if (gMain.inBattle) gTasks[ewram1C000.unk4].func = HandleBattlePartyMenu; @@ -4868,12 +4868,12 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) x = (i / 3) * 9 + 11; y = ((i % 3) << 1) + 1; - MenuPrint_PixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1); + Menu_PrintTextPixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1); if (i == 2) - MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); + Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); else - MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); + Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; @@ -4881,7 +4881,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2); - MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); + Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); } } #elif GERMAN @@ -5028,7 +5028,7 @@ void PrintNewStatsInLevelUpWindow(u8 taskId) gStringVar1[2] = 0x06; ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[newStatIndex], 1, 3); - MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 6, y * 8, 0); + Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 6, y * 8, 0); } } diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 7cbb20bad..0d5c5234b 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -218,7 +218,7 @@ void PlayerPC(void) static void InitPlayerPCMenu(u8 taskId) { Menu_DrawStdWindowFrame(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); - PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder); + Menu_PrintItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder); InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9); TASK.FUNC = PlayerPCProcessMenuInput; } @@ -237,13 +237,13 @@ static void PlayerPCProcessMenuInput(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); sPlayerPCMenuActions[gPcItemMenuOptionOrder[Menu_GetCursorPos()]].func(taskId); } else if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); sPlayerPCMenuActions[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT. } @@ -307,7 +307,7 @@ static void InitItemStorageMenu(u8 var) { Menu_EraseWindowRect(0, 0, 10, 9); Menu_DrawStdWindowFrame(0, 0, 11, 9); - PrintMenuItems(1, 1, 4, (struct MenuAction *)gPCText_ItemPCOptionsText); + Menu_PrintItems(1, 1, 4, (struct MenuAction *)gPCText_ItemPCOptionsText); InitMenu(0, 1, 1, 4, var, 10); ItemStorageMenuPrint(gPCText_OptionDescList[var]); } @@ -339,7 +339,7 @@ static void ItemStorageMenuProcessInput(u8 var) } else if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gPCText_ItemPCOptionsText[ITEMPC_MENU_EXIT].func(var); } @@ -378,7 +378,7 @@ static void ItemStorage_Withdraw(u8 taskId) { s16 *data = TASK.data; - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 9); NUM_ITEMS = CountUsedPCItemSlots(); @@ -400,7 +400,7 @@ static void ItemStorage_Toss(u8 taskId) { s16 *data = TASK.data; - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 9); NUM_ITEMS = CountUsedPCItemSlots(); @@ -420,7 +420,7 @@ static void ItemStorage_Toss(u8 taskId) static void ItemStorage_Exit(u8 var) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 9); ReshowPlayerPC(var); } @@ -549,7 +549,7 @@ static void ItemStorage_ProcessInput(u8 taskId) PlaySE(SE_SELECT); if(SWITCH_MODE_ACTIVE == FALSE) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); ItemStorage_GoBackToPlayerPCMenu(taskId); } else @@ -1112,7 +1112,7 @@ static void Mailbox_ProcessInput(u8 taskId) } else if(gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); if(eMailboxInfo.itemsAbove + eMailboxInfo.cursorPos == eMailboxInfo.count) @@ -1127,7 +1127,7 @@ static void Mailbox_ProcessInput(u8 taskId) } else if(gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Mailbox_TurnOff(taskId); } @@ -1165,7 +1165,7 @@ static void Mailbox_TurnOff(u8 taskId) static void Mailbox_PrintMailOptions(u8 taskId) // Mailbox_PrintMailOptions { Menu_DrawStdWindowFrame(0, 0, 0xC, 0x9); - PrintMenuItems(1, 1, 4, (struct MenuAction *)gMailboxMailOptions); + Menu_PrintItems(1, 1, 4, (struct MenuAction *)gMailboxMailOptions); InitMenu(0, 1, 1, 4, 0, 0xB); TASK.FUNC = Mailbox_MailOptionsProcessInput; } @@ -1231,7 +1231,7 @@ static const u8 gHighlightedMoveToBagFormatText[] = _("{COLOR RED}{STR_VAR_1}"); static void Mailbox_MoveToBag(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); StringCopy(gStringVar1, gOtherText_MoveToBag); Menu_PrintText(gHighlightedMoveToBagFormatText, 1, 3); // gHighlightedMoveToBagFormatText DisplayItemMessageOnField(taskId, gOtherText_MessageWillBeLost, Mailbox_DrawYesNoBeforeMove, 0); @@ -1325,7 +1325,7 @@ static void Mailbox_NoPokemonForMail(u8 taskId) static void Mailbox_Cancel(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 0xC, 0x9); Mailbox_DrawMailMenuAndDoProcessInput(taskId); } diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index b238857fa..dd94e1755 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -275,11 +275,11 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 5: - SetUpWindowConfig(&gWindowTemplate_81E6E34); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E34); gMain.state++; break; case 6: - SetUpWindowConfig(&gWindowTemplate_81E6E50); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E50); gMain.state++; break; case 7: @@ -814,7 +814,7 @@ static void sub_810C368(u8 taskId) sub_80F98A4(1); BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_DrawStdWindowFrame(7, v0 + 4, 13, 11); - PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); + Menu_PrintItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); gSpecialVar_ItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; gTasks[taskId].func = sub_810C40C; @@ -869,7 +869,7 @@ static void sub_810C508(u8 taskId) static void sub_810C540(u8 taskId) { BasicInitMenuWindow(&gWindowTemplate_81E6E50); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(7, 4, 13, 11); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]); StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt); @@ -932,7 +932,7 @@ static void sub_810C748(u8 taskId) { StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(7, 4, 13, 11); gTasks[taskId].func = sub_810BF7C; } diff --git a/src/field/region_map.c b/src/field/region_map.c index f7db0a61e..a098eb73d 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1540,7 +1540,7 @@ void CB2_InitFlyRegionMap(void) FreeAllSpritePalettes(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7224); + Text_LoadWindowTemplate(&gWindowTemplate_81E7224); break; case 2: InitMenuWindow(&gWindowTemplate_81E7224); @@ -1562,7 +1562,7 @@ void CB2_InitFlyRegionMap(void) break; case 6: LoadPalette(sFlyRegionMapFrame_Pal, 16, 32); - MenuPrint_PixelCoords(gOtherText_FlyToWhere, 1, 0x90, 1); + Menu_PrintTextPixelCoords(gOtherText_FlyToWhere, 1, 0x90, 1); break; case 7: CreateFlyTargetGraphics(); diff --git a/src/field/script_menu.c b/src/field/script_menu.c index ee5843049..9d901a03c 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -652,7 +652,7 @@ static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuActi bottom = top + (2 * count + 1); Menu_DrawStdWindowFrame(left, top, right, bottom); - PrintMenuItems(left + 1, top + 1, count, list); + Menu_PrintItems(left + 1, top + 1, count, list); InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1); StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); } @@ -704,7 +704,7 @@ static void Task_HandleMultichoiceInput(u8 taskId) { gSpecialVar_Result = selection; } - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); DestroyTask(taskId); EnableBothScriptContexts(); @@ -745,7 +745,7 @@ static void sub_80B53B4(u8 left, u8 top, u8 count, const struct MenuAction *list right = (right + left) + 2; bottom = top + (2 * count + 1); - PrintMenuItems(left, top, count, list); + Menu_PrintItems(left, top, count, list); InitMenu(0, left, top, count, 0, right - left - 1); StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); } @@ -839,7 +839,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPr bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 3 + top; } - width = sub_807288C(columnCount); + width = Menu_GetColumnXCoord(columnCount); gTasks[taskId].tLeft = left; gTasks[taskId].tTop = top; gTasks[taskId].tRight = width + left + 2; @@ -866,7 +866,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId) { gSpecialVar_Result = selection; } - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 16c2f57c2..203b57867 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -1021,13 +1021,13 @@ void sub_80BC824(u8 taskId) PlaySE(5); if (taskData[1] + taskData[2] == taskData[0]) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } else { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); taskData[4] = sub_80BC948(taskData[1] + taskData[2]); sub_80BC980(taskId); } @@ -1035,7 +1035,7 @@ void sub_80BC824(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(5); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } @@ -1067,7 +1067,7 @@ void sub_80BC980(u8 taskId) PauseVerticalScrollIndicator(0); PauseVerticalScrollIndicator(1); Menu_DrawStdWindowFrame(1, 0, 12, 5); - PrintMenuItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); + Menu_PrintItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); InitMenu(0, 2, 1, 2, 0, 10); gTasks[taskId].func = sub_80BC9E4; } @@ -1108,7 +1108,7 @@ void sub_80BCA84(u8 taskId) DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC190(gStringVar1, taskData[4]); diff --git a/src/field/shop.c b/src/field/shop.c index cfd4818dc..d56d65c3f 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -85,13 +85,13 @@ u8 CreateShopMenu(u8 martType) { gMartInfo.numChoices = 2; Menu_DrawStdWindowFrame(0, 0, 10, 7); - PrintMenuItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); + Menu_PrintItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); } else { gMartInfo.numChoices = 1; Menu_DrawStdWindowFrame(0, 0, 10, 5); - PrintMenuItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); + Menu_PrintItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); } InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel @@ -174,7 +174,7 @@ void sub_80B2F30(u8 taskId) void HandleShopMenuQuit(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 8); sub_80BE3BC(); ScriptContext2_Disable(); @@ -285,7 +285,7 @@ void BuyMenuDrawGraphics(void) ResetPaletteFade(); ResetSpriteData(); ResetTasks(); - SetUpWindowConfig(&gWindowTemplate_81E6DFC); + Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); InitMenuWindow(&gWindowTemplate_81E6DFC); BuyMenuDrawMapGraphics(); gMartInfo.cursor = zero; @@ -557,7 +557,7 @@ void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) stringPtr = &gStringVar1[3]; GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4); - MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); + Menu_PrintTextPixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); } void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) @@ -586,7 +586,7 @@ void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) else { GetMoneyAmountText(stringPtr, gDecorations[itemId].price, 0x4); - MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1); + Menu_PrintTextPixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1); } } @@ -1084,7 +1084,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PauseVerticalScrollIndicator(1); sub_80F979C(1, 1); sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0xC, 0xD, 0x13); if (gMartInfo.martType == MART_TYPE_0) diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index abf837daa..9ff3a037c 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -400,7 +400,7 @@ static void SlotMachineSetup_0_1(void) static void SlotMachineSetup_3_0(void) { - SetUpWindowConfig(&gWindowTemplate_81E7128); + Text_LoadWindowTemplate(&gWindowTemplate_81E7128); InitMenuWindow(&gWindowTemplate_81E7128); } @@ -850,7 +850,7 @@ static bool8 sub_8102318(struct Task *task) static bool8 sub_8102344(struct Task *task) { - s8 input = ProcessMenuInputNoWrap_(); + s8 input = Menu_ProcessInputNoWrap_(); if (input == 0) { Menu_EraseScreen(); @@ -2808,7 +2808,7 @@ static void sub_8104B80(struct Task *task) sub_8104DA4(); sub_81065DC(); BasicInitMenuWindow(&gWindowTemplate_81E7144); - MenuPrint_PixelCoords(gOtherText_ReelTime, 10, 32, 1); + Menu_PrintTextPixelCoords(gOtherText_ReelTime, 10, 32, 1); BeginNormalPaletteFade(-1, 0, 16, 0, 0); task->data[0]++; } diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 8131e2511..5b2276d1b 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -404,7 +404,7 @@ static u8 StartMenu_PlayerCallback(void) //When player selects SAVE static u8 StartMenu_SaveCallback(void) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); gCallback_03004AE8 = SaveCallback1; return 0; } @@ -594,7 +594,7 @@ static u8 SaveDialogCB_DisplayConfirmYesNoMenu(void) static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: //YES HideSaveDialog(); @@ -640,7 +640,7 @@ static u8 SaveDialogCB_DisplayOverwriteYesNoMenu(void) static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: //YES HideSaveDialog(); @@ -774,7 +774,7 @@ static bool32 sub_80719FC(u8 *step) dp12_8087EA4(); break; case 2: - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; break; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 9b644c6cb..91b706e78 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -294,7 +294,7 @@ void CB2_ChooseStarter(void) LoadCompressedObjectPic(&gUnknown_083F7794[0]); LoadCompressedObjectPic(&gUnknown_083F77A4[0]); LoadSpritePalettes(gUnknown_083F77B4); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); @@ -435,7 +435,7 @@ static void Task_StarterChoose5(u8 taskId) { u8 spriteId; - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: // YES //Return the starter choice and exit. diff --git a/src/field/trader.c b/src/field/trader.c index eb0c8a934..b4732ab15 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -135,7 +135,7 @@ void sub_8109B34(u8 taskId, u8 decorationId) gSpecialVar_0x8004 = decorationId; } - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 1, 12, 12); DestroyTask(taskId); EnableBothScriptContexts(); @@ -215,7 +215,7 @@ void ScrSpecial_TraderMenuGiveDecoration(void) void sub_8109D04(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); @@ -237,7 +237,7 @@ void sub_8109D04(u8 taskId) void sub_8109DAC(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); gSpecialVar_0x8006 = 0; DestroyTask(taskId); diff --git a/src/field/tv.c b/src/field/tv.c index e88e3c72b..e1eade130 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -864,7 +864,7 @@ void PutPokemonTodayCaughtOnAir(void) sub_80BE138((TVShow *)pokemonToday); pokemonToday->language = GAME_LANGUAGE; pokemonToday->language2 = sub_80BDEAC(pokemonToday->nickname); - StripExtCtrlCodes(pokemonToday->nickname); + Text_StripExtCtrlCodes(pokemonToday->nickname); } } } @@ -966,7 +966,7 @@ void InterviewAfter_BravoTrainerPokemonProfile(void) sub_80BE160((TVShow *)bravoTrainerNew); bravoTrainerNew->language = GAME_LANGUAGE; bravoTrainerNew->var1f = sub_80BDEAC(bravoTrainerNew->pokemonNickname); - StripExtCtrlCodes(bravoTrainerNew->pokemonNickname); + Text_StripExtCtrlCodes(bravoTrainerNew->pokemonNickname); } } @@ -1075,7 +1075,7 @@ void sub_80BE478(void) sub_80BE160((TVShow *)nameRaterShow); nameRaterShow->language = GAME_LANGUAGE; nameRaterShow->pokemonNameLanguage = sub_80BDEAC(nameRaterShow->pokemonName); - StripExtCtrlCodes(nameRaterShow->pokemonName); + Text_StripExtCtrlCodes(nameRaterShow->pokemonName); } } @@ -1138,7 +1138,7 @@ void InterviewAfter_PkmnFanClubOpinions(void) sub_80BE160((TVShow *)fanclubOpinions); fanclubOpinions->language = GAME_LANGUAGE; fanclubOpinions->var0E = sub_80BDEAC(fanclubOpinions->var10); - StripExtCtrlCodes(fanclubOpinions->var10); + Text_StripExtCtrlCodes(fanclubOpinions->var10); } void InterviewAfter_DummyShow4(void) diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index a4a36e40a..9363498ba 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -228,7 +228,7 @@ static void sub_8136294(void) gUnknown_02039304->unk50++; break; case 3: - SetUpWindowConfig(&gWindowTemplate_81E7080); + Text_LoadWindowTemplate(&gWindowTemplate_81E7080); gUnknown_02039304->unk50++; break; case 4: diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 8620ad9f0..4f2a6dccd 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -236,7 +236,7 @@ static void LoadWallClockGraphics(void) FreeAllSpritePalettes(); LoadCompressedObjectPic(&gUnknown_083F7A90[0]); LoadSpritePalettes(gUnknown_083F7AA0); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); } @@ -417,7 +417,7 @@ static void Task_SetClock3(u8 taskId) Menu_DrawStdWindowFrame(2, 16, 27, 19); Menu_PrintText(gOtherText_CorrectTimePrompt, 3, 17); Menu_DrawStdWindowFrame(23, 8, 29, 13); - PrintMenuItems(24, 9, 2, gMenuYesNoItems); + Menu_PrintItems(24, 9, 2, gMenuYesNoItems); InitMenu(0, 24, 9, 2, 1, 5); gTasks[taskId].func = Task_SetClock4; } @@ -425,7 +425,7 @@ static void Task_SetClock3(u8 taskId) //Get menu selection static void Task_SetClock4(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: //YES PlaySE(SE_SELECT); @@ -433,7 +433,7 @@ static void Task_SetClock4(u8 taskId) return; case -1: //B button case 1: //NO - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Menu_EraseWindowRect(23, 8, 29, 13); Menu_EraseWindowRect(2, 16, 27, 19); diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index eae1c0b4e..356a31b00 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -268,11 +268,11 @@ void CB2_InitLearnMove(void) sub_8133558(); SetVBlankCallback(VBlankCB_LearnMove); - SetUpWindowConfig(&gWindowTemplate_81E7240); + Text_LoadWindowTemplate(&gWindowTemplate_81E7240); InitMenuWindow(&gWindowTemplate_81E7240); Menu_EraseScreen(); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); @@ -302,11 +302,11 @@ void sub_81327A4(void) sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; SetVBlankCallback(VBlankCB_LearnMove); - SetUpWindowConfig(&gWindowTemplate_81E7240); + Text_LoadWindowTemplate(&gWindowTemplate_81E7240); InitMenuWindow(&gWindowTemplate_81E7240); Menu_EraseScreen(); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); @@ -333,7 +333,7 @@ void CB2_LearnMove(void) if (sLearnMoveStruct->unk1D) { sLearnMoveStruct->unk1D = FALSE; - sub_814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); + MenuCursor_SetPos814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); } if (sLearnMoveStruct->unk1E != 0) { @@ -409,7 +409,7 @@ void LearnMoveMain(void) break; case 9: { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -444,7 +444,7 @@ void LearnMoveMain(void) break; case 13: { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -475,7 +475,7 @@ void LearnMoveMain(void) break; case 18: { - s8 var = ProcessMenuInputNoWrap_(); + s8 var = Menu_ProcessInputNoWrap_(); if (var == 0) { @@ -503,7 +503,7 @@ void LearnMoveMain(void) break; case 26: { - s8 var = ProcessMenuInputNoWrap_(); + s8 var = Menu_ProcessInputNoWrap_(); if (var == 0) { diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index cd1083790..ab43c033a 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -354,7 +354,7 @@ static u8 sub_80F8A28(void) RETURN_UP_STATE; case 6: - SetUpWindowConfig(&gWindowTemplate_81E6DFC); + Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); RETURN_UP_STATE; case 7: diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c index eeefa8431..3734856b8 100644 --- a/src/pokemon/mon_markings.c +++ b/src/pokemon/mon_markings.c @@ -566,8 +566,8 @@ void sub_80F761C(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag) } sMenu->cursorBaseY = y + 8; - sub_814A5C0(0, basePaletteTag + 1, 15, 0, 0x30); - sub_814A880(x + 8, sMenu->cursorBaseY); + MenuCursor_Create814A5C0(0, basePaletteTag + 1, 15, 0, 0x30); + MenuCursor_SetPos814A880(x + 8, sMenu->cursorBaseY); sub_814AABC(sub_80F7908); } diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 2ed404327..194636e4d 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -530,7 +530,7 @@ static bool8 TransitionToPokeblockFeedScene(void) gMain.state++; break; case 4: - SetUpWindowConfig(&gWindowTemplate_81E6E50); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E50); gMain.state++; break; case 5: diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index b7081f35d..48ce26bb8 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1425,7 +1425,7 @@ void CB2_InitPokedex(void) ResetPaletteFade(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; - SetUpWindowConfig(&gWindowTemplate_81E7048); + Text_LoadWindowTemplate(&gWindowTemplate_81E7048); InitMenuWindow(&gWindowTemplate_81E7048); gMain.state++; break; @@ -1937,7 +1937,7 @@ static bool8 sub_808D344(u8 a) gMain.state++; break; case 2: - SetUpWindowConfig(&gWindowTemplate_81E7048); + Text_LoadWindowTemplate(&gWindowTemplate_81E7048); InitMenuWindow(&gWindowTemplate_81E7048); LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80)); gMain.state++; @@ -2283,7 +2283,7 @@ static u8 sub_808DFE4(u16 num, u8 b, u8 c) text[i] = CHAR_HYPHEN; break; } - MenuPrint_PixelCoords(text, (b - 0x11) * 8 + 0xFC, c * 8, 0); + Menu_PrintTextPixelCoords(text, (b - 0x11) * 8 + 0xFC, c * 8, 0); return i; } @@ -2951,7 +2951,7 @@ static void Task_InitPageScreenMultistep(u8 taskId) gMain.state++; break; case 3: - SetUpWindowConfig(&gWindowTemplate_81E7064); + Text_LoadWindowTemplate(&gWindowTemplate_81E7064); InitMenuWindow(&gWindowTemplate_81E7064); gMain.state++; break; @@ -3205,7 +3205,7 @@ static void Task_InitCryScreenMultistep(u8 taskId) gMain.state++; break; case 3: - SetUpWindowConfig(&gWindowTemplate_81E702C); + Text_LoadWindowTemplate(&gWindowTemplate_81E702C); InitMenuWindow(&gWindowTemplate_81E702C); ResetPaletteFade(); gMain.state++; @@ -3394,7 +3394,7 @@ static void Task_InitSizeScreenMultistep(u8 taskId) { u8 string[40]; //I hope this is the correct size - SetUpWindowConfig(&gWindowTemplate_81E702C); + Text_LoadWindowTemplate(&gWindowTemplate_81E702C); InitMenuWindow(&gWindowTemplate_81E702C); string[0] = EOS; StringAppend(string, gDexText_SizeComparedTo); @@ -3841,7 +3841,7 @@ static void sub_8090750(u8 taskId) gTasks[taskId].data[0]++; break; case 2: - SetUpWindowConfig(&gWindowTemplate_81E7064); + Text_LoadWindowTemplate(&gWindowTemplate_81E7064); InitMenuWindow(&gWindowTemplate_81E7064); DmaClear16(3, (void *)(VRAM + 0xC000), 0x200); gTasks[taskId].data[0]++; @@ -4770,7 +4770,7 @@ static void sub_8091E54(u8 taskId) } break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7064); + Text_LoadWindowTemplate(&gWindowTemplate_81E7064); InitMenuWindow(&gWindowTemplate_81E7064); LoadCompressedObjectPic(&gUnknown_083A05CC[0]); LoadSpritePalettes(gUnknown_083A05DC); @@ -4997,7 +4997,7 @@ static void sub_8092508(u8 taskId) static void sub_80925B4(u16 a, int unused) { - sub_814AD7C(0x90, (a * 2 + 1) * 8); + MenuCursor_SetPos814AD7C(0x90, (a * 2 + 1) * 8); } static void sub_80925CC(u8 taskId) @@ -5305,29 +5305,29 @@ static void sub_8092B68(u8 taskId) var = gTasks[taskId].data[6] + gTasks[taskId].data[7]; StringCopy(gStringVar1, gUnknown_083B5910[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 16, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 16, 1); var = gTasks[taskId].data[8] + gTasks[taskId].data[9]; StringCopy(gStringVar1, gUnknown_083B5968[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 32, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 32, 1); var = gTasks[taskId].data[10] + gTasks[taskId].data[11]; StringCopy(gStringVar1, gUnknown_083B59C8[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AAC, 45, 48, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AAC, 45, 48, 1); var = gTasks[taskId].data[12] + gTasks[taskId].data[13]; StringCopy(gStringVar1, gUnknown_083B59C8[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AAC, 93, 48, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AAC, 93, 48, 1); var = gTasks[taskId].data[4] + gTasks[taskId].data[5]; StringCopy(gStringVar1, gUnknown_083B58D8[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 64, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 64, 1); if (IsNationalPokedexEnabled()) { var = gTasks[taskId].data[2] + gTasks[taskId].data[3]; StringCopy(gStringVar1, gUnknown_083B58C0[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 80, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 80, 1); } } diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index f4d227f7f..bfd0bc972 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -308,7 +308,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src) language = GAME_LANGUAGE; SetMonData(mon, MON_DATA_LANGUAGE, &language); - StripExtCtrlCodes(nickname); + Text_StripExtCtrlCodes(nickname); SetMonData(mon, MON_DATA_NICKNAME, nickname); SetMonData(mon, MON_DATA_FRIENDSHIP, &src->friendship); SetMonData(mon, MON_DATA_HP_EV, &src->hpEV); diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index da9a18148..70234ac48 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -230,7 +230,7 @@ static void sub_8089BDC(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct { PrintPartyMenuPromptText(5, arg6); Menu_DrawStdWindowFrame(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1); - PrintMenuItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order); + Menu_PrintItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order); } void sub_8089C50(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order) @@ -368,7 +368,7 @@ void DoPokemonMenu_Switch(u8 taskID) static void PokemonMenu_Switch(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); ewram01000.unkC = sub_806CD5C; ewram01000.array[53553] = 1; DoPokemonMenu_Switch(taskID); @@ -407,7 +407,7 @@ static void sub_808A100(u8 taskID) static void PokemonMenu_Item(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sPokeMenuCursorPos = 0; Menu_EraseWindowRect(19, 0, 29, 19); gTasks[taskID].func = sub_808A100; @@ -600,7 +600,7 @@ static void sub_808A678(u8 taskID) static void PokemonMenu_TakeItem(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678); @@ -608,7 +608,7 @@ static void PokemonMenu_TakeItem(u8 taskID) static void PokemonMenu_TakeMail(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); DoTakeMail(taskID, sub_808A678); @@ -616,7 +616,7 @@ static void PokemonMenu_TakeMail(u8 taskID) static void PokemonMenu_Mail(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sPokeMenuCursorPos = 0; Menu_EraseWindowRect(19, 0, 29, 19); ShowPartyPopupMenu(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, 0); @@ -686,14 +686,14 @@ static void sub_808A8D4(u8 taskID) static void PokemonMenu_Cancel(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); sub_808A8D4(taskID); } static void PokemonMenu_CancelSubmenu(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); @@ -711,7 +711,7 @@ static void PokemonMenu_FieldMove(u8 taskID) { s16* data = gTasks[taskID].data; - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); tFieldMoveId = sPokeMenuOptionsOrder[sPokeMenuCursorPos] - POKEMENU_FIRST_FIELD_MOVE_ID; if (sub_80F9344() == TRUE) { diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index e448c9ed3..d98383c6d 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -718,7 +718,7 @@ bool8 sub_809DA84(void) gMain.state++; break; case 5: - SetUpWindowConfig(&gWindowTemplate_81E6E6C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E6C); gMain.state++; break; case 6: @@ -2716,7 +2716,7 @@ static void sub_809FF64(struct Pokemon *mon) *buffer++ = CHAR_SLASH; buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1); - MenuPrint_PixelCoords(gStringVar1, 126, 56, 1); + Menu_PrintTextPixelCoords(gStringVar1, 126, 56, 1); } static void sub_80A0090(struct Pokemon *mon) @@ -3127,7 +3127,7 @@ bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon) u8 enemyId = GetMultiplayerId() ^ 1; trainerId = gLinkPlayers[enemyId].trainerId & 0xFFFF; StringCopy(gStringVar1, gLinkPlayers[enemyId].name); - StripExtCtrlCodes(gStringVar1); + Text_StripExtCtrlCodes(gStringVar1); } else { @@ -5295,7 +5295,7 @@ u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8 id) static void sub_80A1EF8(const u8 *text, u8 id, u8 left, u16 top, s32 e) { sub_80A1E9C(gStringVar4, text, id); - MenuPrint_PixelCoords(gStringVar4, left, top, (bool8)e); + Menu_PrintTextPixelCoords(gStringVar4, left, top, (bool8)e); } static void sub_80A1F48(const u8 *text, u8 id, u8 c, u8 d, u16 e) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 43c9475ca..3b534c96c 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -3268,7 +3268,7 @@ bool8 sub_80EF284(u8 a) sub_80EEDE8(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7224); + Text_LoadWindowTemplate(&gWindowTemplate_81E7224); break; case 2: MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224); @@ -3660,7 +3660,7 @@ bool8 sub_80EF874(void) sub_80EEDE8(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7224); + Text_LoadWindowTemplate(&gWindowTemplate_81E7224); break; case 2: MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224); @@ -3972,7 +3972,7 @@ bool8 sub_80EFF68(void) gUnknown_083DFEC4->unkD162[0] = 11; break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7080); + Text_LoadWindowTemplate(&gWindowTemplate_81E7080); break; case 2: MultistepInitMenuWindowBegin(&gWindowTemplate_81E7080); @@ -4086,7 +4086,7 @@ bool8 sub_80F02A0(void) gUnknown_083DFEC4->unkD162[0] = 11; break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E70D4); + Text_LoadWindowTemplate(&gWindowTemplate_81E70D4); break; case 2: MultistepInitMenuWindowBegin(&gWindowTemplate_81E70D4); @@ -4269,7 +4269,7 @@ _080F033C: .4byte 0x000087c8\n\ _080F0340: .4byte 0x0000d162\n\ _080F0344:\n\ ldr r0, _080F034C @ =gWindowTemplate_81E70D4\n\ - bl SetUpWindowConfig\n\ + bl Text_LoadWindowTemplate\n\ b _080F0618\n\ .align 2, 0\n\ _080F034C: .4byte gWindowTemplate_81E70D4\n\ diff --git a/src/roulette.c b/src/roulette.c index 950cbdbb1..e88c36c01 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -596,7 +596,7 @@ void sub_8115384(void) gMain.state++; break; case 0x2: - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); LoadPalette(&gUnknown_083F86BC, 0x0, 0x1C0); gMain.state++; diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 32a48fd36..b59d02939 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -198,8 +198,8 @@ void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); void sub_80A6978(void); u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); -void sub_814A880(u8 a1, u8 a2); -u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +void MenuCursor_SetPos814A880(u8 a1, u8 a2); +u8 MenuCursor_Create814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); s8 GetFirstFreePokeblockSlot(void); bool8 sub_810CA34(struct Pokeblock *pokeblock); #ifdef GERMAN @@ -957,7 +957,7 @@ static void sub_804E56C(void) ResetSpriteData(); FreeAllSpritePalettes(); SetVBlankCallback(NULL); - SetUpWindowConfig(&gWindowTemplate_81E6F68); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F68); InitMenuWindow(&gWindowTemplate_81E6F68); gBerryBlenderData->field_0++; gBerryBlenderData->field_140 = 0; @@ -1135,7 +1135,7 @@ static void sub_804E9F8(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB0_BerryBlender); - SetUpWindowConfig(&gWindowTemplate_81E6F68); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F68); InitMenuWindow(&gWindowTemplate_81E6F68); gLinkType = 0x4422; gBerryBlenderData->field_0++; @@ -1338,7 +1338,7 @@ static void sub_804F0F4(void) SetVBlankCallback(VBlankCB0_BerryBlender); - SetUpWindowConfig(&gWindowTemplate_81E6F68); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F68); InitMenuWindow(&gWindowTemplate_81E6F68); gLinkType = 0x4422; @@ -1426,7 +1426,7 @@ static void sub_804F2A8(void) if (GetMultiplayerId() == gBerryBlenderData->field_9A[i]) stringPtr = StringCopy(stringPtr, sRedColorString); StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name); - MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); + Menu_PrintTextPixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); } } } @@ -2494,14 +2494,14 @@ static void sub_8050760(void) static void sub_80508D4(u8 value) { gBerryBlenderData->field_AA = value; - sub_814A880(192, (gBerryBlenderData->field_AA * 16) + 72); + MenuCursor_SetPos814A880(192, (gBerryBlenderData->field_AA * 16) + 72); } static void sub_80508FC(void) { gBerryBlenderData->field_AA = 0; Menu_DrawStdWindowFrame(23, 8, 28, 13); - sub_814A5C0(0, -1, 12, 0x2D9F, 32); + MenuCursor_Create814A5C0(0, -1, 12, 0x2D9F, 32); Menu_PrintText(gOtherText_YesNoTerminating, 24, 9); sub_80508D4(gBerryBlenderData->field_AA); } @@ -3080,7 +3080,7 @@ void unref_sub_80516F8(u8 taskID) task->data[0] = 0; if (task->data[0] == 100) { - ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); + Text_EraseWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); Menu_DrawStdWindowFrame(4, 4, 10, 12); for (i = 0; i < 3; i++) { @@ -3606,7 +3606,7 @@ void unref_sub_80524BC(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB1_BerryBlender); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); SeedRng(gMain.vblankCounter1); REG_DISPCNT = 0x1540; diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index de9063823..401872644 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -244,7 +244,7 @@ static void HoldContestPainting(void) static void ContestPaintingInitWindow(u8 arg0) { InitMenuWindow(&gWindowTemplate_81E7160); - SetUpWindowConfig(&gWindowTemplate_81E7160); + Text_LoadWindowTemplate(&gWindowTemplate_81E7160); } static void ContestPaintingPrintCaption(u8 contestType, u8 arg1) @@ -291,7 +291,7 @@ static void ContestPaintingPrintCaption(u8 contestType, u8 arg1) xPos = 3; yPos = 14; } - MenuPrint_PixelCoords(gUnknown_03005E40, xPos * 8 + 1, yPos * 8, 1); + Menu_PrintTextPixelCoords(gUnknown_03005E40, xPos * 8 + 1, yPos * 8, 1); } static void ContestPaintingInitBG(void) diff --git a/src/scene/credits.c b/src/scene/credits.c index f113fe965..e31e2c797 100644 --- a/src/scene/credits.c +++ b/src/scene/credits.c @@ -474,7 +474,7 @@ void sub_81439D0(void) taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; gTasks[taskIdC].data[TDC_0] = 40; - SetUpWindowConfig(&gWindowTemplate_81E7208); + Text_LoadWindowTemplate(&gWindowTemplate_81E7208); InitMenuWindow(&gWindowTemplate_81E7208); LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC)); diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index e76f5b47c..e0b798aea 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -471,7 +471,7 @@ static void CB2_EggHatch_0(void) gSpecialVar_0x8005 = GetCurrentMapMusic(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gEggHatchData->window, &gWindowTemplate_81E6F84); gEggHatchData->tileDataStartOffset = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gEggHatchData->window); @@ -633,7 +633,7 @@ static void CB2_EggHatch_1(void) case 9: { s8 menuInput; - if ((menuInput = ProcessMenuInputNoWrap_()) != -2) + if ((menuInput = Menu_ProcessInputNoWrap_()) != -2) { if (menuInput != -1 && menuInput != 1) { diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 571b8ab8d..167130aa5 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -197,7 +197,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, REG_WININ = 0; REG_WINOUT = 0; - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; @@ -306,7 +306,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) REG_WIN1V = 0; REG_WININ = 0; REG_WINOUT = 0; - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -373,7 +373,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gMain.state++; break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); gMain.state++; break; @@ -1087,7 +1087,7 @@ static void Task_TradeEvolutionScene(u8 taskID) sEvoCursorPos = 0; Text_InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); Text_PrintWindow8002F44(&gUnknown_03004828->window); - sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); + MenuCursor_Create814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); sub_81150D8(); gTasks[taskID].tLearnMoveState++; sEvoCursorPos = 0; @@ -1110,7 +1110,7 @@ static void Task_TradeEvolutionScene(u8 taskID) } if (gMain.newKeys & A_BUTTON) { - ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); + Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); DestroyMenuCursor(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); @@ -1126,7 +1126,7 @@ static void Task_TradeEvolutionScene(u8 taskID) } if (gMain.newKeys & B_BUTTON) { - ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); + Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); DestroyMenuCursor(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); @@ -3955,7 +3955,7 @@ static void VBlankCB_TradeEvolutionScene(void) static void sub_81150D8(void) { - sub_814A880(200, 72 + (sEvoCursorPos * 16)); + MenuCursor_SetPos814A880(200, 72 + (sEvoCursorPos * 16)); } static void EvoDummyFunc2(void) diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 4f8124ace..948c288ff 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -582,7 +582,7 @@ static void sub_81422B8(u8 taskID) static void sub_81422E8(u8 taskID) { - SetUpWindowConfig(&gWindowTemplate_81E7198); + Text_LoadWindowTemplate(&gWindowTemplate_81E7198); InitMenuWindow(&gWindowTemplate_81E7198); gTasks[taskID].func = sub_8142320; } @@ -714,7 +714,7 @@ static void sub_81426F8(u8 taskID) static void sub_8142738(u8 taskID) { REG_DISPCNT = 0x1940; - SetUpWindowConfig(&gWindowTemplate_81E71B4); + Text_LoadWindowTemplate(&gWindowTemplate_81E71B4); InitMenuWindow(&gWindowTemplate_81E71B4); gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6); @@ -864,7 +864,7 @@ static void sub_8142A28(u8 taskID) *(vram1 + i) = i + 3; *(vram2 + i) = i + 20; } - SetUpWindowConfig(&gWindowTemplate_81E7198); + Text_LoadWindowTemplate(&gWindowTemplate_81E7198); InitMenuWindow(&gWindowTemplate_81E7198); gTasks[taskID].func = sub_8142B04; } @@ -1285,7 +1285,7 @@ static void sub_8143570(void) gReservedSpritePaletteCount = 8; LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); - SetUpWindowConfig(&gWindowTemplate_81E71B4); + Text_LoadWindowTemplate(&gWindowTemplate_81E71B4); InitMenuWindow(&gWindowTemplate_81E71B4); } -- cgit v1.2.3 From 8d7f3f65635bba4f9550e9206564c0724b88dd2e Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Wed, 10 Jan 2018 01:15:15 +0100 Subject: finished decompiling bug.s with nonmatching --- asm/bug.s | 545 -------------------------------------------------- ld_script.txt | 1 - src/battle/anim/bug.c | 314 ++++++++++++++++++++++++++++- 3 files changed, 313 insertions(+), 547 deletions(-) delete mode 100755 asm/bug.s diff --git a/asm/bug.s b/asm/bug.s deleted file mode 100755 index 3d1fb8669..000000000 --- a/asm/bug.s +++ /dev/null @@ -1,545 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ bug - - thumb_func_start sub_80DCA70 -sub_80DCA70: @ 80DCA70 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080DCAA0 @ =gAnimBankTarget - ldrb r0, [r0] - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - movs r1, 0 - bl sub_807A3FC - ldr r0, _080DCAA4 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DCAAC - ldr r0, _080DCAA8 @ =gBattleAnimArgs - ldrh r1, [r4, 0x20] - ldrh r2, [r0] - subs r1, r2 - strh r1, [r4, 0x20] - b _080DCAB8 - .align 2, 0 -_080DCAA0: .4byte gAnimBankTarget -_080DCAA4: .4byte gAnimBankAttacker -_080DCAA8: .4byte gBattleAnimArgs -_080DCAAC: - ldr r1, _080DCAE0 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - adds r0, r1, 0 -_080DCAB8: - ldrh r0, [r0, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r0, _080DCAE4 @ =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080DCAD4 - ldrh r0, [r4, 0x22] - adds r0, 0x8 - strh r0, [r4, 0x22] -_080DCAD4: - ldr r0, _080DCAE8 @ =sub_80DCAEC - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DCAE0: .4byte gBattleAnimArgs -_080DCAE4: .4byte gAnimBankTarget -_080DCAE8: .4byte sub_80DCAEC - thumb_func_end sub_80DCA70 - - thumb_func_start sub_80DCAEC -sub_80DCAEC: @ 80DCAEC - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080DCB20 - movs r0, 0 - strh r0, [r3, 0x2E] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] -_080DCB20: - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x33 - bne _080DCB34 - adds r0, r3, 0 - bl DestroyAnimSprite -_080DCB34: - pop {r0} - bx r0 - thumb_func_end sub_80DCAEC - - thumb_func_start sub_80DCB38 -sub_80DCB38: @ 80DCB38 - ldr r2, _080DCB54 @ =REG_BLDCNT - movs r3, 0xFD - lsls r3, 6 - adds r1, r3, 0 - strh r1, [r2] - adds r2, 0x2 - movs r1, 0x10 - strh r1, [r2] - movs r1, 0x10 - strh r1, [r0, 0x2E] - ldr r1, _080DCB58 @ =sub_80DCB5C - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080DCB54: .4byte REG_BLDCNT -_080DCB58: .4byte sub_80DCB5C - thumb_func_end sub_80DCB38 - - thumb_func_start sub_80DCB5C -sub_80DCB5C: @ 80DCB5C - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x32] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r0, 0x13 - bgt _080DCB70 - adds r0, r1, 0x1 - strh r0, [r3, 0x32] - b _080DCBA8 -_080DCB70: - ldrh r1, [r3, 0x30] - adds r0, r1, 0x1 - strh r0, [r3, 0x30] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080DCBA8 - ldrh r1, [r3, 0x2E] - subs r1, 0x1 - strh r1, [r3, 0x2E] - ldr r2, _080DCBAC @ =REG_BLDALPHA - movs r0, 0x10 - subs r0, r1 - lsls r0, 8 - orrs r1, r0 - strh r1, [r2] - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080DCBA8 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _080DCBB0 @ =sub_80DCBB4 - str r0, [r3, 0x1C] -_080DCBA8: - pop {r0} - bx r0 - .align 2, 0 -_080DCBAC: .4byte REG_BLDALPHA -_080DCBB0: .4byte sub_80DCBB4 - thumb_func_end sub_80DCB5C - - thumb_func_start sub_80DCBB4 -sub_80DCBB4: @ 80DCBB4 - push {lr} - ldr r1, _080DCBC8 @ =REG_BLDCNT - movs r2, 0 - strh r2, [r1] - adds r1, 0x2 - strh r2, [r1] - bl DestroyAnimSprite - pop {r0} - bx r0 - .align 2, 0 -_080DCBC8: .4byte REG_BLDCNT - thumb_func_end sub_80DCBB4 - - thumb_func_start sub_80DCBCC -sub_80DCBCC: @ 80DCBCC - push {r4-r7,lr} - sub sp, 0x4 - adds r7, r0, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080DCBEC - ldr r1, _080DCBE8 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - b _080DCC0E - .align 2, 0 -_080DCBE8: .4byte gBattleAnimArgs -_080DCBEC: - ldr r0, _080DCCE8 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DCC0E - ldr r1, _080DCCEC @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] - ldrh r0, [r1, 0x2] - negs r0, r0 - strh r0, [r1, 0x2] - ldrh r0, [r1, 0x6] - negs r0, r0 - strh r0, [r1, 0x6] -_080DCC0E: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080DCC5E - ldr r0, _080DCCE8 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - adds r4, r0, 0 - ldr r5, _080DCCF0 @ =gAnimBankTarget - ldrb r0, [r5] - bl GetBankSide - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _080DCC5E - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - cmp r0, 0 - beq _080DCC4C - ldrb r0, [r5] - bl GetBankIdentity - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DCC5E -_080DCC4C: - ldr r0, _080DCCEC @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r1, [r0, r2] - negs r1, r1 - strh r1, [r0, 0x4] - movs r2, 0 - ldrsh r1, [r0, r2] - negs r1, r1 - strh r1, [r0] -_080DCC5E: - adds r0, r7, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r5, _080DCCF0 @ =gAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBankPosition - adds r4, r0, 0 - lsls r4, 24 - ldr r6, _080DCCEC @ =gBattleAnimArgs - lsrs r4, 24 - ldrh r0, [r6, 0x4] - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - movs r1, 0x3 - bl GetBankPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r6, 0x6] - adds r1, r2 - lsls r1, 16 - ldrh r2, [r7, 0x20] - lsls r0, r4, 16 - asrs r0, 16 - subs r0, r2 - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r7, 0x22] - lsrs r5, r1, 16 - asrs r1, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl sub_80790F0 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8078FDC - ldrh r0, [r6, 0x8] - strh r0, [r7, 0x2E] - strh r4, [r7, 0x32] - strh r5, [r7, 0x36] - ldr r0, _080DCCF4 @ =sub_8078B34 - str r0, [r7, 0x1C] - ldr r1, _080DCCF8 @ =DestroyAnimSprite - adds r0, r7, 0 - bl StoreSpriteCallbackInData - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DCCE8: .4byte gAnimBankAttacker -_080DCCEC: .4byte gBattleAnimArgs -_080DCCF0: .4byte gAnimBankTarget -_080DCCF4: .4byte sub_8078B34 -_080DCCF8: .4byte DestroyAnimSprite - thumb_func_end sub_80DCBCC - - thumb_func_start sub_80DCCFC -sub_80DCCFC: @ 80DCCFC - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080DCD68 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DCD1C - ldr r1, _080DCD6C @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080DCD1C: - ldr r4, _080DCD6C @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r6, 0x2E] - ldr r5, _080DCD70 @ =gAnimBankTarget - ldrb r0, [r5] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r6, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r6, 0x36] - ldrh r0, [r4, 0xA] - strh r0, [r6, 0x38] - adds r0, r6, 0 - bl sub_80786EC - ldr r0, _080DCD74 @ =sub_80DCD78 - str r0, [r6, 0x1C] - adds r2, r6, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DCD68: .4byte gAnimBankAttacker -_080DCD6C: .4byte gBattleAnimArgs -_080DCD70: .4byte gAnimBankTarget -_080DCD74: .4byte sub_80DCD78 - thumb_func_end sub_80DCCFC - - thumb_func_start sub_80DCD78 -sub_80DCD78: @ 80DCD78 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r4, r0, 0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - beq _080DCDA4 - adds r0, r4, 0 - bl DestroyAnimSprite - b _080DCE34 -_080DCDA4: - movs r0, 0x2E - adds r0, r4 - mov r8, r0 - ldrh r7, [r4, 0x20] - ldrh r5, [r4, 0x24] - ldrh r1, [r4, 0x22] - mov r12, r1 - ldrh r6, [r4, 0x26] - mov r2, r8 - add r1, sp, 0x4 - movs r3, 0x7 -_080DCDBA: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080DCDBA - adds r0, r7, r5 - lsls r0, 16 - lsrs r5, r0, 16 - mov r2, r12 - adds r0, r2, r6 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - bl sub_8078718 - lsls r0, 24 - cmp r0, 0 - bne _080DCE34 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - lsls r1, r5, 16 - asrs r1, 16 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r1, r2 - lsls r2, r6, 16 - asrs r2, 16 - subs r1, r2 - lsls r1, 16 - asrs r1, 16 - bl sub_80790F0 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 24 - adds r0, r1 - lsrs r0, 16 - movs r3, 0x80 - lsls r3, 1 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - adds r2, r3, 0 - bl sub_8078FDC - add r2, sp, 0x4 - mov r1, r8 - movs r3, 0x7 -_080DCE26: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080DCE26 -_080DCE34: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80DCD78 - - thumb_func_start sub_80DCE40 -sub_80DCE40: @ 80DCE40 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080DCE54 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DCE5C - ldr r4, _080DCE58 @ =gAnimBankAttacker - b _080DCE5E - .align 2, 0 -_080DCE54: .4byte gBattleAnimArgs -_080DCE58: .4byte gAnimBankAttacker -_080DCE5C: - ldr r4, _080DCE90 @ =gAnimBankTarget -_080DCE5E: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x12 - strh r0, [r5, 0x22] - ldr r1, _080DCE94 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080DCE98 @ =sub_80785E4 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DCE90: .4byte gAnimBankTarget -_080DCE94: .4byte move_anim_8074EE0 -_080DCE98: .4byte sub_80785E4 - thumb_func_end sub_80DCE40 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index ba0705659..c8ede2726 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -293,7 +293,6 @@ SECTIONS { asm/flying.o(.text); asm/psychic.o(.text); src/battle/anim/bug.o(.text); - asm/bug.o(.text); asm/rock.o(.text); asm/ghost.o(.text); asm/dragon.o(.text); diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index e9372ed9e..3736a86a8 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -10,6 +10,10 @@ extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; static void sub_80DCA38(struct Sprite *sprite); +static void sub_80DCAEC(struct Sprite *sprite); +static void sub_80DCB5C(struct Sprite *sprite); +static void sub_80DCBB4(struct Sprite *sprite); +void sub_80DCD78(struct Sprite *sprite); // used in Move_MEGAHORN void sub_80DC824(struct Sprite *sprite) @@ -102,4 +106,312 @@ static void sub_80DCA38(struct Sprite *sprite) sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]); sprite->data[6] = (sprite->data[6] + 13) & 0xFF; -} \ No newline at end of file +} + +// used in Move_STRING_SHOT +void sub_80DCA70(struct Sprite *sprite) +{ + sub_807A3FC(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); + if (GetBankSide(gAnimBankAttacker)) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + if (!GetBankSide(gAnimBankTarget)) + sprite->pos1.y += 8; + + sprite->callback = sub_80DCAEC; +} + +static void sub_80DCAEC(struct Sprite *sprite) +{ + if (++sprite->data[0] == 3) + { + sprite->data[0] = 0; + sprite->invisible ^= 1; + } + + if (++sprite->data[1] == 51) + { + DestroyAnimSprite(sprite); + } +} + +// used in Move_SPIDER_WEB +void sub_80DCB38(struct Sprite *sprite) +{ + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 16; + + sprite->data[0] = 16; + sprite->callback = sub_80DCB5C; +} + +static void sub_80DCB5C(struct Sprite *sprite) +{ + if (sprite->data[2] < 20) + { + sprite->data[2]++; + } + else if (sprite->data[1]++ & 1) + { + sprite->data[0]--; + REG_BLDALPHA = sprite->data[0] | ((16 - sprite->data[0]) << 8); + + if (sprite->data[0] == 0) + { + sprite->invisible = TRUE; + sprite->callback = sub_80DCBB4; + } + } +} + +static void sub_80DCBB4(struct Sprite *sprite) +{ + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimSprite(sprite); +} + +// used in 3 moves: +// Move_POISON_STING, Move_TWINEEDLE, Move_SPIKE_CANNON +void sub_80DCBCC(struct Sprite *sprite) +{ + s16 lVarX, lVarY; + u16 rot; + + if (IsContest()) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + else + { + if (GetBankSide(gAnimBankAttacker)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + } + + if (!IsContest()) + { + if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget)) + { + if (GetBankIdentity(gAnimBankTarget) == 0 || GetBankIdentity(gAnimBankTarget) == 1) + { + s16 temp1, temp2; + + temp1 = gBattleAnimArgs[2]; + gBattleAnimArgs[2] = -temp1; + + temp2 = gBattleAnimArgs[0]; + gBattleAnimArgs[0] = -temp2; + } + } + } + + sub_80787B0(sprite, 1); + + lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + rot = sub_80790F0(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y); + rot += 0xC000; + sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = lVarX; + sprite->data[4] = lVarY; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +// used in 2 moves: +// Move_PIN_MISSILE, Move_ICICLE_SPEAR +void sub_80DCCFC(struct Sprite *sprite) +{ + sub_80787B0(sprite, 1); + + if (GetBankSide(gAnimBankAttacker)) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[5]; + sub_80786EC(sprite); + + sprite->callback = sub_80DCD78; + sprite->invisible = TRUE; +} + +#ifdef NONMATCHING +void sub_80DCD78(struct Sprite *sprite) +{ + int i; + s16 x1, x2, y1, y2; + // s16 scale; + // u16 *data; + u16 tempData[8]; + s16 rot; + + sprite->invisible = FALSE; + + if (sub_8078718(sprite)) + { + DestroyAnimSprite(sprite); + return; + } + + // data = &sprite->data[7]; + x1 = sprite->pos1.x; + x2 = sprite->pos2.x; + y1 = sprite->pos1.y; + y2 = sprite->pos2.y; + for (i = 0; i < 8; i++) + { + tempData[i] = sprite->data[i]; + } + x2 += x1; + y2 += y1; + + if (!sub_8078718(sprite)) + { + rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2, + sprite->pos1.y + sprite->pos2.y - y2); + rot += 0xC000; + // scale = 0x100 + sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); + + for (i = 0; i < 8; i++) + { + sprite->data[i] = tempData[1]; + } + } +} +#else +__attribute__((naked)) +void sub_80DCD78(struct Sprite *sprite) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x14\n\ + adds r4, r0, 0\n\ + adds r2, r4, 0\n\ + adds r2, 0x3E\n\ + ldrb r0, [r2]\n\ + movs r1, 0x5\n\ + negs r1, r1\n\ + ands r1, r0\n\ + strb r1, [r2]\n\ + adds r0, r4, 0\n\ + bl sub_8078718\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080DCDA4\n\ + adds r0, r4, 0\n\ + bl DestroyAnimSprite\n\ + b _080DCE34\n\ +_080DCDA4:\n\ + movs r0, 0x2E\n\ + adds r0, r4\n\ + mov r8, r0\n\ + ldrh r7, [r4, 0x20]\n\ + ldrh r5, [r4, 0x24]\n\ + ldrh r1, [r4, 0x22]\n\ + mov r12, r1\n\ + ldrh r6, [r4, 0x26]\n\ + mov r2, r8\n\ + add r1, sp, 0x4\n\ + movs r3, 0x7\n\ +_080DCDBA:\n\ + ldrh r0, [r2]\n\ + strh r0, [r1]\n\ + adds r2, 0x2\n\ + adds r1, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _080DCDBA\n\ + adds r0, r7, r5\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + mov r2, r12\n\ + adds r0, r2, r6\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + adds r0, r4, 0\n\ + bl sub_8078718\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080DCE34\n\ + ldrh r0, [r4, 0x24]\n\ + ldrh r1, [r4, 0x20]\n\ + adds r0, r1\n\ + lsls r1, r5, 16\n\ + asrs r1, 16\n\ + subs r0, r1\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + ldrh r1, [r4, 0x26]\n\ + ldrh r2, [r4, 0x22]\n\ + adds r1, r2\n\ + lsls r2, r6, 16\n\ + asrs r2, 16\n\ + subs r1, r2\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + bl sub_80790F0\n\ + lsls r0, 16\n\ + movs r1, 0xC0\n\ + lsls r1, 24\n\ + adds r0, r1\n\ + lsrs r0, 16\n\ + movs r3, 0x80\n\ + lsls r3, 1\n\ + str r0, [sp]\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + adds r2, r3, 0\n\ + bl sub_8078FDC\n\ + add r2, sp, 0x4\n\ + mov r1, r8\n\ + movs r3, 0x7\n\ +_080DCE26:\n\ + ldrh r0, [r2]\n\ + strh r0, [r1]\n\ + adds r2, 0x2\n\ + adds r1, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _080DCE26\n\ +_080DCE34:\n\ + add sp, 0x14\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_80DCE40(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 18; + } + else + { + sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2); + sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + 18; + } + + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_80785E4; +} -- cgit v1.2.3 From f6d7abc83482cd56b7051784ec5420dc34a2ffe2 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Wed, 10 Jan 2018 01:26:38 +0100 Subject: oops --- src/battle/anim/bug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index 3736a86a8..501d544b1 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -287,7 +287,7 @@ void sub_80DCD78(struct Sprite *sprite) for (i = 0; i < 8; i++) { - sprite->data[i] = tempData[1]; + sprite->data[i] = tempData[i]; } } } -- cgit v1.2.3 From 3c375850d12d774cb75803093ad80aa2783e4566 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 9 Jan 2018 19:28:01 -0500 Subject: comment --- src/libs/libisagbprn.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index a9656f3c5..98231dcf5 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -8,8 +8,8 @@ #define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE #define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) -// for auto no$gba support, the string "no$gba" should be at this address. -// except it's not, blame Martin, hence I'm letting the user deal with this nonsense. +// originally for auto no$gba support, the string "no$gba" should be at this address, +// the user needs to read this string out as the memory viewer won't show it. #define NOCASHGBAIDADDR 0x4FFFA00 #define NOCASHGBAPRINTADDR 0x4FFFA14 -- cgit v1.2.3 From a51b95150ba86a3982f613886471626f742aeacd Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 9 Jan 2018 19:40:14 -0500 Subject: both print defines for nocashgba --- src/libs/libisagbprn.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 98231dcf5..e0e979e95 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -11,7 +11,8 @@ // originally for auto no$gba support, the string "no$gba" should be at this address, // the user needs to read this string out as the memory viewer won't show it. #define NOCASHGBAIDADDR 0x4FFFA00 -#define NOCASHGBAPRINTADDR 0x4FFFA14 +#define NOCASHGBAPRINTADDR1 0x4FFFA10 // automatically adds a newline after the string has finished +#define NOCASHGBAPRINTADDR2 0x4FFFA14 // does not automatically add the newline. by default, NOCASHGBAPRINTADDR2 is used. this is used to keep strings consistent between no$gba and VBA-RR, but a user can choose to forgo this. struct AGBPrintStruct { @@ -159,7 +160,7 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP /* void NoCashGBAPrint(const char *pBuf) { - *(volatile u32*)NOCASHGBAPRINTADDR = (u32)pBuf; + *(volatile u32*)NOCASHGBAPRINTADDR2 = (u32)pBuf; } void NoCashGBAPrintf(const char *pBuf, ...) -- cgit v1.2.3 From 0be27e16d2bea0fb4a9145849706779501ae3450 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 19:54:56 -0600 Subject: match sub_80DCD78 --- src/battle/anim/bug.c | 161 ++++++++------------------------------------------ 1 file changed, 23 insertions(+), 138 deletions(-) diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index 501d544b1..dbc0f75a5 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -39,7 +39,7 @@ void sub_80DC824(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; - + sprite->callback = sub_8078B34; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -64,7 +64,7 @@ void sub_80DC8F4(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - + sprite->callback = sub_8078B34; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -247,157 +247,42 @@ void sub_80DCCFC(struct Sprite *sprite) sprite->invisible = TRUE; } -#ifdef NONMATCHING void sub_80DCD78(struct Sprite *sprite) { - int i; - s16 x1, x2, y1, y2; - // s16 scale; - // u16 *data; - u16 tempData[8]; - s16 rot; - sprite->invisible = FALSE; if (sub_8078718(sprite)) { DestroyAnimSprite(sprite); - return; } - - // data = &sprite->data[7]; - x1 = sprite->pos1.x; - x2 = sprite->pos2.x; - y1 = sprite->pos1.y; - y2 = sprite->pos2.y; - for (i = 0; i < 8; i++) - { - tempData[i] = sprite->data[i]; - } - x2 += x1; - y2 += y1; - - if (!sub_8078718(sprite)) + else { - rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2, - sprite->pos1.y + sprite->pos2.y - y2); - rot += 0xC000; - // scale = 0x100 - sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); + s16 tempData[8]; + u16 *data = sprite->data; + u16 x1 = sprite->pos1.x; + s16 x2 = sprite->pos2.x; + u16 y1 = sprite->pos1.y; + s16 y2 = sprite->pos2.y; + int i; for (i = 0; i < 8; i++) + tempData[i] = data[i]; + + x2 += x1; + y2 += y1; + + if (!sub_8078718(sprite)) { - sprite->data[i] = tempData[i]; + u16 rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2, + sprite->pos1.y + sprite->pos2.y - y2); + rot += 0xC000; + sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); + + for (i = 0; i < 8; i++) + data[i] = tempData[i]; } } } -#else -__attribute__((naked)) -void sub_80DCD78(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - sub sp, 0x14\n\ - adds r4, r0, 0\n\ - adds r2, r4, 0\n\ - adds r2, 0x3E\n\ - ldrb r0, [r2]\n\ - movs r1, 0x5\n\ - negs r1, r1\n\ - ands r1, r0\n\ - strb r1, [r2]\n\ - adds r0, r4, 0\n\ - bl sub_8078718\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080DCDA4\n\ - adds r0, r4, 0\n\ - bl DestroyAnimSprite\n\ - b _080DCE34\n\ -_080DCDA4:\n\ - movs r0, 0x2E\n\ - adds r0, r4\n\ - mov r8, r0\n\ - ldrh r7, [r4, 0x20]\n\ - ldrh r5, [r4, 0x24]\n\ - ldrh r1, [r4, 0x22]\n\ - mov r12, r1\n\ - ldrh r6, [r4, 0x26]\n\ - mov r2, r8\n\ - add r1, sp, 0x4\n\ - movs r3, 0x7\n\ -_080DCDBA:\n\ - ldrh r0, [r2]\n\ - strh r0, [r1]\n\ - adds r2, 0x2\n\ - adds r1, 0x2\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bge _080DCDBA\n\ - adds r0, r7, r5\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - mov r2, r12\n\ - adds r0, r2, r6\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - adds r0, r4, 0\n\ - bl sub_8078718\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080DCE34\n\ - ldrh r0, [r4, 0x24]\n\ - ldrh r1, [r4, 0x20]\n\ - adds r0, r1\n\ - lsls r1, r5, 16\n\ - asrs r1, 16\n\ - subs r0, r1\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - ldrh r1, [r4, 0x26]\n\ - ldrh r2, [r4, 0x22]\n\ - adds r1, r2\n\ - lsls r2, r6, 16\n\ - asrs r2, 16\n\ - subs r1, r2\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - bl sub_80790F0\n\ - lsls r0, 16\n\ - movs r1, 0xC0\n\ - lsls r1, 24\n\ - adds r0, r1\n\ - lsrs r0, 16\n\ - movs r3, 0x80\n\ - lsls r3, 1\n\ - str r0, [sp]\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - adds r2, r3, 0\n\ - bl sub_8078FDC\n\ - add r2, sp, 0x4\n\ - mov r1, r8\n\ - movs r3, 0x7\n\ -_080DCE26:\n\ - ldrh r0, [r2]\n\ - strh r0, [r1]\n\ - adds r2, 0x2\n\ - adds r1, 0x2\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bge _080DCE26\n\ -_080DCE34:\n\ - add sp, 0x14\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_80DCE40(struct Sprite *sprite) { -- cgit v1.2.3 From cf7ffa568a2a09c761bae6aa4c70b8d8913c3e81 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 23:37:26 -0600 Subject: rename unknown_task to scanline_effect --- include/scanline_effect.h | 42 +++++++ include/unknown_task.h | 42 ------- ld_script.txt | 2 +- src/battle/anim/draw.c | 2 +- src/battle/battle_2.c | 2 +- src/battle/battle_transition.c | 2 +- src/battle/reshow_battle_screen.c | 2 +- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 2 +- src/easy_chat_2.c | 2 +- src/engine/main.c | 2 +- src/engine/main_menu.c | 2 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/trainer_card.c | 2 +- src/field/diploma.c | 2 +- src/field/field_screen_effect.c | 2 +- src/field/item_menu.c | 2 +- src/field/overworld.c | 2 +- src/field/party_menu.c | 2 +- src/field/pokeblock.c | 2 +- src/field/shop.c | 2 +- src/field/start_menu.c | 2 +- src/field/starter_choose.c | 2 +- src/field/wallclock.c | 2 +- src/pokemon/mail.c | 2 +- src/pokemon/pokedex.c | 2 +- src/pokemon/pokemon_summary_screen.c | 2 +- src/pokenav_before.c | 2 +- src/roulette.c | 2 +- src/scanline_effect.c | 235 +++++++++++++++++++++++++++++++++++ src/scene/cable_car.c | 2 +- src/scene/contest_painting.c | 2 +- src/scene/evolution_scene.c | 2 +- src/scene/intro.c | 2 +- src/scene/intro_credits_graphics.c | 2 +- src/scene/title_screen.c | 2 +- src/unknown_task.c | 235 ----------------------------------- 38 files changed, 311 insertions(+), 311 deletions(-) create mode 100644 include/scanline_effect.h delete mode 100644 include/unknown_task.h create mode 100644 src/scanline_effect.c delete mode 100644 src/unknown_task.c diff --git a/include/scanline_effect.h b/include/scanline_effect.h new file mode 100644 index 000000000..011e5f5b5 --- /dev/null +++ b/include/scanline_effect.h @@ -0,0 +1,42 @@ +#ifndef GUARD_UNKNOWN_TASK_H +#define GUARD_UNKNOWN_TASK_H + +struct UnknownTaskStruct +{ + volatile void *dest; + u32 control; + u8 unk8; + u8 unk9; +}; + +struct UnknownTaskStruct2 +{ + void *src[2]; + volatile void *dest; + u32 unkC; + void (*unk10)(void); + u8 srcBank; + u8 unk15; + u8 unk16; + u8 unk17; + u8 taskId; + u8 filler19[0x7]; +}; + +extern struct UnknownTaskStruct2 gUnknown_03004DC0; + +extern u16 gUnknown_03004DE0[][0x3C0]; + +void remove_some_task(void); +void remove_some_task(void); +void dp12_8087EA4(void); +void dp12_8087EA4(void); +//void sub_80895F8(u32 i, u32 i1, u32 i2); +//void sub_80895F8(); +void sub_80895F8(struct UnknownTaskStruct unk); +void sub_8089668(void); +void sub_8089668(); +//void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6); +u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); + +#endif // GUARD_UNKNOWN_TASK_H diff --git a/include/unknown_task.h b/include/unknown_task.h deleted file mode 100644 index 011e5f5b5..000000000 --- a/include/unknown_task.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef GUARD_UNKNOWN_TASK_H -#define GUARD_UNKNOWN_TASK_H - -struct UnknownTaskStruct -{ - volatile void *dest; - u32 control; - u8 unk8; - u8 unk9; -}; - -struct UnknownTaskStruct2 -{ - void *src[2]; - volatile void *dest; - u32 unkC; - void (*unk10)(void); - u8 srcBank; - u8 unk15; - u8 unk16; - u8 unk17; - u8 taskId; - u8 filler19[0x7]; -}; - -extern struct UnknownTaskStruct2 gUnknown_03004DC0; - -extern u16 gUnknown_03004DE0[][0x3C0]; - -void remove_some_task(void); -void remove_some_task(void); -void dp12_8087EA4(void); -void dp12_8087EA4(void); -//void sub_80895F8(u32 i, u32 i1, u32 i2); -//void sub_80895F8(); -void sub_80895F8(struct UnknownTaskStruct unk); -void sub_8089668(void); -void sub_8089668(); -//void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6); -u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); - -#endif // GUARD_UNKNOWN_TASK_H diff --git a/ld_script.txt b/ld_script.txt index c8ede2726..9b385d3b8 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -119,7 +119,7 @@ SECTIONS { src/field/trainer_see.o(.text); src/field/wild_encounter.o(.text); src/field/field_effect.o(.text); - src/unknown_task.o(.text); + src/scanline_effect.o(.text); src/pokemon/pokemon_menu.o(.text); src/engine/option_menu.o(.text); src/pokemon/pokedex.o(.text); diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index 3adb62e06..0508eed8c 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -3,7 +3,7 @@ #include "trig.h" #include "battle_anim.h" #include "sound.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 249b67e0d..20daf4052 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -34,7 +34,7 @@ #include "trainer.h" #include "trig.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "constants/battle_move_effects.h" #include "constants/items.h" diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 985f43945..48ef86fa2 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -13,7 +13,7 @@ #include "trainer.h" #include "field_camera.h" #include "ewram.h" -#include "unknown_task.h" +#include "scanline_effect.h" void sub_807DE10(void); void dp12_8087EA4(void); diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 42bb3ba7f..83dad5f60 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -3,7 +3,7 @@ #include "battle_anim.h" #include "palette.h" #include "main.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "text.h" #include "rom_8077ABC.h" #include "data2.h" diff --git a/src/contest.c b/src/contest.c index 8985d6490..9f8fe976a 100644 --- a/src/contest.c +++ b/src/contest.c @@ -29,7 +29,7 @@ #include "task.h" #include "text.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 0585c4e00..25890e3ea 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -14,7 +14,7 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" extern u8 gUnknown_0203856C; diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index cb0e98b71..a5fc1dee9 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -14,7 +14,7 @@ #include "sprite.h" #include "string_util.h" #include "strings.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern const struct WindowTemplate gWindowTemplate_81E6D54; extern const struct WindowTemplate gWindowTemplate_81E6DA8; diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 66af7fc04..48e005cab 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -17,7 +17,7 @@ #include "strings.h" #include "strings2.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern void sub_8095C8C(); extern void sub_809D104(void *, u16, u16, const void *, u16, u16, u16, u16); diff --git a/src/engine/main.c b/src/engine/main.c index 82a5fffb4..d1ccffea0 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -13,7 +13,7 @@ #include "rtc.h" #include "siirtc.h" #include "sound.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern struct SoundInfo gSoundInfo; extern u32 IntrMain[]; diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 715570fe0..3402d93bc 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -21,7 +21,7 @@ #include "task.h" #include "text.h" #include "title_screen.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" #define BirchSpeechUpdateWindowText() ((u8)Menu_UpdateWindowTextOverrideLineLength(24)) diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 6e9efd342..5297b3378 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -13,7 +13,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" struct ResetRtcStruct { diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 70942fc29..f1b115610 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -18,7 +18,7 @@ #include "string_util.h" #include "strings2.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "ewram.h" diff --git a/src/field/diploma.c b/src/field/diploma.c index 7028eec02..70e4e4349 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -10,7 +10,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" static void VBlankCB(void); static void MainCB2(void); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index 6e818ce68..5f5113a2f 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -7,7 +7,7 @@ #include "script.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 2be5f1e1d..fe896ac51 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -33,7 +33,7 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" // External stuff diff --git a/src/field/overworld.c b/src/field/overworld.c index 9fab20876..75e3aa6d5 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -47,7 +47,7 @@ #include "tileset_anim.h" #include "time_events.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "wild_encounter.h" #ifdef SAPPHIRE diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 9cad5bd73..7e443a116 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -32,7 +32,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "script_pokemon_80F9.h" #include "ewram.h" diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index dd94e1755..ea96a4efd 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -8,7 +8,7 @@ #include "script.h" #include "strings.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "text.h" #include "main.h" #include "menu.h" diff --git a/src/field/shop.c b/src/field/shop.c index d56d65c3f..a3e361733 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -15,7 +15,7 @@ #include "strings.h" #include "task.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "field_map_obj.h" #include "field_player_avatar.h" #include "fieldmap.h" diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 5b2276d1b..d7d0282c6 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -28,7 +28,7 @@ #include "strings2.h" #include "task.h" #include "trainer_card.h" -#include "unknown_task.h" +#include "scanline_effect.h" //Menu actions enum { diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 91b706e78..d3cfba1e3 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -14,7 +14,7 @@ #include "strings.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u16 gSpecialVar_Result; extern struct SpriteTemplate gUnknown_02024E8C; diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 4f2a6dccd..bc12db819 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -10,7 +10,7 @@ #include "strings2.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u16 gSpecialVar_0x8004; extern u8 gMiscClock_Gfx[]; diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index ab43c033a..95424e890 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -15,7 +15,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" struct UnkMailStruct diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 48ce26bb8..306cac3c9 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -23,7 +23,7 @@ #include "strings.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" #define NATIONAL_DEX_COUNT 386 diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index d98383c6d..4e2be1418 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -29,7 +29,7 @@ #include "strings2.h" #include "task.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" static void sub_809FC0C(void); static void sub_809FEB8(void); diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 3b534c96c..fb197cee2 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -18,7 +18,7 @@ #include "sound.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u8 ewram[]; diff --git a/src/roulette.c b/src/roulette.c index e88c36c01..ae16b1460 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -23,7 +23,7 @@ #include "task.h" #include "text.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" asm(".include \"constants/gba_constants.inc\""); diff --git a/src/scanline_effect.c b/src/scanline_effect.c new file mode 100644 index 000000000..670f2d9b3 --- /dev/null +++ b/src/scanline_effect.c @@ -0,0 +1,235 @@ +#include "global.h" +#include "data2.h" +#include "task.h" +#include "trig.h" +#include "scanline_effect.h" + +static void sub_80896F4(void); +static void sub_8089714(void); + +extern u16 gUnknown_030041B0; +extern u16 gBattle_BG1_Y; +extern u16 gUnknown_030041B8; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG1_X; + +extern u8 gUnknown_0202FFA4; + +extern struct UnknownTaskStruct2 gUnknown_03004DC0; + +// Is this a struct? +extern u16 gUnknown_03004DE0[][0x3C0]; + +void remove_some_task(void) +{ + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + if (gUnknown_03004DC0.taskId != 0xFF) + { + DestroyTask(gUnknown_03004DC0.taskId); + gUnknown_03004DC0.taskId = 0xFF; + } +} + +void dp12_8087EA4(void) +{ + CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); + gUnknown_03004DC0.src[0] = 0; + gUnknown_03004DC0.src[1] = 0; + gUnknown_03004DC0.dest = 0; + gUnknown_03004DC0.unkC = 0; + gUnknown_03004DC0.srcBank = 0; + gUnknown_03004DC0.unk15 = 0; + gUnknown_03004DC0.unk16 = 0; + gUnknown_03004DC0.unk17 = 0; + gUnknown_03004DC0.taskId = 0xFF; +} + +void sub_80895F8(struct UnknownTaskStruct unk) +{ + if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; + gUnknown_03004DC0.unk10 = sub_80896F4; + } + else + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; + gUnknown_03004DC0.unk10 = sub_8089714; + } + + gUnknown_03004DC0.unkC = unk.control; + gUnknown_03004DC0.dest = unk.dest; + gUnknown_03004DC0.unk15 = unk.unk8; + gUnknown_03004DC0.unk16 = unk.unk9; + gUnknown_03004DC0.unk17 = unk.unk9; +} + +void sub_8089668(void) +{ + if (gUnknown_03004DC0.unk15) + { + if (gUnknown_03004DC0.unk15 == 3) + { + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + gUnknown_0202FFA4 = 1; + } + else + { + DmaStop(0); + DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); + gUnknown_03004DC0.unk10(); + gUnknown_03004DC0.srcBank ^= 1; + } + } +} + +static void sub_80896F4(void) +{ + u16 *dest = (u16 *)gUnknown_03004DC0.dest; + u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void sub_8089714(void) +{ + u32 *dest = (u32 *)gUnknown_03004DC0.dest; + u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void task00_for_dp12(u8 taskId) +{ + int value = 0; + + if (gUnknown_0202FFA4) + { + DestroyTask(taskId); + gUnknown_03004DC0.taskId = 0xFF; + } + else + { + if (gTasks[taskId].data[7]) + { + switch (gTasks[taskId].data[6]) + { + case 0x0: + value = gBattle_BG0_X; + break; + case 0x2: + value = gBattle_BG0_Y; + break; + case 0x4: + value = gBattle_BG1_X; + break; + case 0x6: + value = gBattle_BG1_Y; + break; + case 0x8: + value = gBattle_BG2_X; + break; + case 0xA: + value = gBattle_BG2_Y; + break; + case 0xC: + value = gUnknown_030041B0; + break; + case 0xE: + value = gUnknown_030041B8; + break; + } + } + if (gTasks[taskId].data[4]) + { + int i; + int offset; + gTasks[taskId].data[4]--; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + } + else + { + int i; + int offset; + gTasks[taskId].data[4] = gTasks[taskId].data[5]; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) + { + gTasks[taskId].data[3] = 0; + } + } + } +} + +static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) +{ + u16 i = 0; + u8 offset = 0; + + while (i < 0x100) + { + a1[i] = (gSineTable[offset] * a3) / 256; + offset += a2; + i++; + } +} + +u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +{ + int i; + int offset; + struct UnknownTaskStruct unk; + u8 taskId; + + dp12_8087EA4(); + + unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); + unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; + unk.unk8 = 1; + unk.unk9 = 0; + + sub_80895F8(unk); + + taskId = CreateTask(task00_for_dp12, 0); + + gTasks[taskId].data[0] = a1; + gTasks[taskId].data[1] = a2; + gTasks[taskId].data[2] = 256 / a3; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = a5; + gTasks[taskId].data[5] = a5; + gTasks[taskId].data[6] = a6; + gTasks[taskId].data[7] = a7; + + gUnknown_03004DC0.taskId = taskId; + gUnknown_0202FFA4 = 0; + + sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); + + offset = 320; + + for (i = a1; i < a2; i++) + { + gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; + gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; + offset++; + } + + return taskId; +} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 52a0aeebf..bae037ff7 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -14,7 +14,7 @@ #include "decompress.h" #include "field_weather.h" #include "field_map_obj.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "event_data.h" #include "cable_car_util.h" #include "constants/map_objects.h" diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 401872644..3b68f0143 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -11,7 +11,7 @@ #include "string_util.h" #include "strings.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" static u8 gUnknown_03000750; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 167130aa5..dcca1fddb 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -9,7 +9,7 @@ #include "pokemon.h" #include "string_util.h" #include "battle.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "data2.h" #include "decompress.h" #include "m4a.h" diff --git a/src/scene/intro.c b/src/scene/intro.c index 4dc6cc91c..beceb6e90 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -19,7 +19,7 @@ #include "task.h" #include "title_screen.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" extern struct SpriteTemplate gUnknown_02024E8C; diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c index 6cee74cce..f0f1264a0 100755 --- a/src/scene/intro_credits_graphics.c +++ b/src/scene/intro_credits_graphics.c @@ -19,7 +19,7 @@ #include "task.h" #include "title_screen.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" // define register constants for the inline asm asm(".include \"constants/gba_constants.inc\"\n"); diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 26fe088d5..bd41ac641 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -13,7 +13,7 @@ #include "sound.h" #include "sprite.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #if ENGLISH #define VERSION_BANNER_SHAPE 1 diff --git a/src/unknown_task.c b/src/unknown_task.c deleted file mode 100644 index 2c71bfb08..000000000 --- a/src/unknown_task.c +++ /dev/null @@ -1,235 +0,0 @@ -#include "global.h" -#include "data2.h" -#include "task.h" -#include "trig.h" -#include "unknown_task.h" - -static void sub_80896F4(void); -static void sub_8089714(void); - -extern u16 gUnknown_030041B0; -extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG1_X; - -extern u8 gUnknown_0202FFA4; - -extern struct UnknownTaskStruct2 gUnknown_03004DC0; - -// Is this a struct? -extern u16 gUnknown_03004DE0[][0x3C0]; - -void remove_some_task(void) -{ - gUnknown_03004DC0.unk15 = 0; - DmaStop(0); - if (gUnknown_03004DC0.taskId != 0xFF) - { - DestroyTask(gUnknown_03004DC0.taskId); - gUnknown_03004DC0.taskId = 0xFF; - } -} - -void dp12_8087EA4(void) -{ - CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gUnknown_03004DC0.src[0] = 0; - gUnknown_03004DC0.src[1] = 0; - gUnknown_03004DC0.dest = 0; - gUnknown_03004DC0.unkC = 0; - gUnknown_03004DC0.srcBank = 0; - gUnknown_03004DC0.unk15 = 0; - gUnknown_03004DC0.unk16 = 0; - gUnknown_03004DC0.unk17 = 0; - gUnknown_03004DC0.taskId = 0xFF; -} - -void sub_80895F8(struct UnknownTaskStruct unk) -{ - if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) - { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; - gUnknown_03004DC0.unk10 = sub_80896F4; - } - else - { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; - gUnknown_03004DC0.unk10 = sub_8089714; - } - - gUnknown_03004DC0.unkC = unk.control; - gUnknown_03004DC0.dest = unk.dest; - gUnknown_03004DC0.unk15 = unk.unk8; - gUnknown_03004DC0.unk16 = unk.unk9; - gUnknown_03004DC0.unk17 = unk.unk9; -} - -void sub_8089668(void) -{ - if (gUnknown_03004DC0.unk15) - { - if (gUnknown_03004DC0.unk15 == 3) - { - gUnknown_03004DC0.unk15 = 0; - DmaStop(0); - gUnknown_0202FFA4 = 1; - } - else - { - DmaStop(0); - DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); - gUnknown_03004DC0.unk10(); - gUnknown_03004DC0.srcBank ^= 1; - } - } -} - -static void sub_80896F4(void) -{ - u16 *dest = (u16 *)gUnknown_03004DC0.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; - *dest = *src; -} - -static void sub_8089714(void) -{ - u32 *dest = (u32 *)gUnknown_03004DC0.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; - *dest = *src; -} - -static void task00_for_dp12(u8 taskId) -{ - int value = 0; - - if (gUnknown_0202FFA4) - { - DestroyTask(taskId); - gUnknown_03004DC0.taskId = 0xFF; - } - else - { - if (gTasks[taskId].data[7]) - { - switch (gTasks[taskId].data[6]) - { - case 0x0: - value = gBattle_BG0_X; - break; - case 0x2: - value = gBattle_BG0_Y; - break; - case 0x4: - value = gBattle_BG1_X; - break; - case 0x6: - value = gBattle_BG1_Y; - break; - case 0x8: - value = gBattle_BG2_X; - break; - case 0xA: - value = gBattle_BG2_Y; - break; - case 0xC: - value = gUnknown_030041B0; - break; - case 0xE: - value = gUnknown_030041B8; - break; - } - } - if (gTasks[taskId].data[4]) - { - int i; - int offset; - gTasks[taskId].data[4]--; - offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) - { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; - offset++; - } - } - else - { - int i; - int offset; - gTasks[taskId].data[4] = gTasks[taskId].data[5]; - offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) - { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; - offset++; - } - gTasks[taskId].data[3]++; - if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - { - gTasks[taskId].data[3] = 0; - } - } - } -} - -static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) -{ - u16 i = 0; - u8 offset = 0; - - while (i < 0x100) - { - a1[i] = (gSineTable[offset] * a3) / 256; - offset += a2; - i++; - } -} - -u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) -{ - int i; - int offset; - struct UnknownTaskStruct unk; - u8 taskId; - - dp12_8087EA4(); - - unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; - unk.unk8 = 1; - unk.unk9 = 0; - - sub_80895F8(unk); - - taskId = CreateTask(task00_for_dp12, 0); - - gTasks[taskId].data[0] = a1; - gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / a3; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = a5; - gTasks[taskId].data[5] = a5; - gTasks[taskId].data[6] = a6; - gTasks[taskId].data[7] = a7; - - gUnknown_03004DC0.taskId = taskId; - gUnknown_0202FFA4 = 0; - - sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); - - offset = 320; - - for (i = a1; i < a2; i++) - { - gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; - gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; - offset++; - } - - return taskId; -} -- cgit v1.2.3 From f9f0e84b70f1b313200acd6f0d180413e34517da Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 23:55:03 -0600 Subject: label some scanline_effect functions --- asm/battle_anim_812C144.s | 12 ++-- asm/battle_intro.s | 24 ++++---- asm/contest_link_80C2020.s | 2 +- asm/dark.s | 16 +++--- asm/dragon.s | 8 +-- asm/ghost.s | 6 +- asm/ground.s | 8 +-- asm/pokenav.s | 6 +- asm/psychic.s | 4 +- asm/water.s | 18 +++--- include/scanline_effect.h | 22 +++---- src/battle/anim/draw.c | 6 +- src/battle/battle_2.c | 2 +- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 4 +- src/easy_chat_2.c | 2 +- src/engine/main.c | 2 +- src/engine/main_menu.c | 6 +- src/engine/option_menu.c | 4 +- src/engine/reset_rtc_screen.c | 2 +- src/field/diploma.c | 2 +- src/field/field_screen_effect.c | 6 +- src/field/item_menu.c | 2 +- src/field/overworld.c | 4 +- src/field/party_menu.c | 2 +- src/field/pokeblock.c | 2 +- src/field/shop.c | 2 +- src/field/start_menu.c | 2 +- src/field/starter_choose.c | 2 +- src/field/use_pokeblock.c | 4 +- src/field/wallclock.c | 2 +- src/pokemon/mail.c | 2 +- src/pokemon/pokedex.c | 4 +- src/pokemon/pokemon_summary_screen.c | 2 +- src/pokenav_before.c | 4 +- src/roulette.c | 2 +- src/scanline_effect.c | 107 ++++++++++++++++++----------------- src/scene/cable_car.c | 2 +- src/scene/contest_painting.c | 2 +- src/scene/evolution_scene.c | 6 +- src/scene/hall_of_fame.c | 4 +- src/scene/intro.c | 2 +- src/scene/title_screen.c | 6 +- sym_common.txt | 2 +- 45 files changed, 168 insertions(+), 165 deletions(-) diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index 02eec98ec..5fc9199eb 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -1946,7 +1946,7 @@ _0812CFDC: ldrsh r0, [r4, r1] cmp r0, 0 beq _0812CFF2 - ldr r1, _0812D004 @ =gUnknown_03004DC0 + ldr r1, _0812D004 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _0812CFF2: @@ -1958,7 +1958,7 @@ _0812CFF8: bx r0 .align 2, 0 _0812D000: .4byte gUnknown_03004DE0 -_0812D004: .4byte gUnknown_03004DC0 +_0812D004: .4byte gScanlineEffect thumb_func_end sub_812CEF0 thumb_func_start sub_812D008 @@ -6711,7 +6711,7 @@ _0812F4EA: ldrsh r0, [r6, r3] cmp r1, r0 ble _0812F60A - ldr r0, _0812F660 @ =gUnknown_03004DC0 + ldr r0, _0812F660 @ =gScanlineEffect mov r10, r0 ldr r1, [sp, 0x4] lsls r0, r1, 16 @@ -6856,7 +6856,7 @@ _0812F636: strh r0, [r6, 0xE] b _0812F676 .align 2, 0 -_0812F660: .4byte gUnknown_03004DC0 +_0812F660: .4byte gScanlineEffect _0812F664: .4byte gUnknown_03004DE0 _0812F668: .4byte gSineTable _0812F66C: .4byte 0xffff0000 @@ -6898,14 +6898,14 @@ _0812F6A6: asrs r0, 16 cmp r0, 0xC ble _0812F712 - ldr r1, _0812F6C0 @ =gUnknown_03004DC0 + ldr r1, _0812F6C0 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0 strh r0, [r6, 0xC] b _0812F700 .align 2, 0 -_0812F6C0: .4byte gUnknown_03004DC0 +_0812F6C0: .4byte gScanlineEffect _0812F6C4: ldrh r0, [r6, 0xC] adds r0, 0x1 diff --git a/asm/battle_intro.s b/asm/battle_intro.s index 4bfcf42fb..16689a911 100755 --- a/asm/battle_intro.s +++ b/asm/battle_intro.s @@ -299,7 +299,7 @@ _080E45E6: strh r0, [r1, 0xC] _080E45FE: movs r3, 0 - ldr r5, _080E46A0 @ =gUnknown_03004DC0 + ldr r5, _080E46A0 @ =gScanlineEffect mov r9, r5 ldr r7, _080E46A4 @ =gUnknown_03004DE0 mov r6, r9 @@ -320,7 +320,7 @@ _080E460A: cmp r3, 0x9F bgt _080E464E ldr r7, _080E46A4 @ =gUnknown_03004DE0 - ldr r6, _080E46A0 @ =gUnknown_03004DC0 + ldr r6, _080E46A0 @ =gScanlineEffect ldr r1, _080E46A8 @ =gTasks mov r2, r12 adds r0, r2, r4 @@ -377,7 +377,7 @@ _080E4690: .4byte gBattle_BG1_Y _080E4694: .4byte 0x0000ffc8 _080E4698: .4byte gBattle_WIN0V _080E469C: .4byte 0xfffffc04 -_080E46A0: .4byte gUnknown_03004DC0 +_080E46A0: .4byte gScanlineEffect _080E46A4: .4byte gUnknown_03004DE0 _080E46A8: .4byte gTasks _080E46AC: .4byte 0x0600e000 @@ -669,7 +669,7 @@ _080E48CC: strh r0, [r1, 0xC] _080E48E0: movs r3, 0 - ldr r4, _080E4978 @ =gUnknown_03004DC0 + ldr r4, _080E4978 @ =gScanlineEffect mov r8, r4 ldr r0, _080E497C @ =gUnknown_03004DE0 mov r12, r0 @@ -692,7 +692,7 @@ _080E48EE: bgt _080E4932 ldr r1, _080E497C @ =gUnknown_03004DE0 mov r12, r1 - ldr r7, _080E4978 @ =gUnknown_03004DC0 + ldr r7, _080E4978 @ =gScanlineEffect ldr r1, _080E4980 @ =gTasks adds r0, r6, r5 lsls r0, 3 @@ -745,7 +745,7 @@ _080E4932: .align 2, 0 _080E4970: .4byte gBattle_WIN0V _080E4974: .4byte 0xfffffc04 -_080E4978: .4byte gUnknown_03004DC0 +_080E4978: .4byte gScanlineEffect _080E497C: .4byte gUnknown_03004DE0 _080E4980: .4byte gTasks _080E4984: .4byte 0x0600e000 @@ -978,7 +978,7 @@ _080E4B3A: strh r0, [r1, 0xC] _080E4B50: movs r3, 0 - ldr r6, _080E4BE8 @ =gUnknown_03004DC0 + ldr r6, _080E4BE8 @ =gScanlineEffect mov r8, r6 ldr r7, _080E4BEC @ =gUnknown_03004DE0 adds r5, r1, 0 @@ -998,7 +998,7 @@ _080E4B5A: cmp r3, 0x9F bgt _080E4B9E ldr r7, _080E4BEC @ =gUnknown_03004DE0 - ldr r6, _080E4BE8 @ =gUnknown_03004DC0 + ldr r6, _080E4BE8 @ =gScanlineEffect ldr r1, _080E4BF0 @ =gTasks mov r2, r12 adds r0, r2, r4 @@ -1053,7 +1053,7 @@ _080E4B9E: .align 2, 0 _080E4BE0: .4byte gBattle_WIN0V _080E4BE4: .4byte 0xfffffc04 -_080E4BE8: .4byte gUnknown_03004DC0 +_080E4BE8: .4byte gScanlineEffect _080E4BEC: .4byte gUnknown_03004DE0 _080E4BF0: .4byte gTasks _080E4BF4: .4byte 0x0600e000 @@ -1323,7 +1323,7 @@ _080E4E00: strh r0, [r1, 0xC] _080E4E16: movs r3, 0 - ldr r0, _080E4EA4 @ =gUnknown_03004DC0 + ldr r0, _080E4EA4 @ =gScanlineEffect mov r9, r0 ldr r2, _080E4EA8 @ =gUnknown_03004DE0 mov r8, r2 @@ -1346,7 +1346,7 @@ _080E4E24: bgt _080E4E68 ldr r0, _080E4EA8 @ =gUnknown_03004DE0 mov r8, r0 - ldr r7, _080E4EA4 @ =gUnknown_03004DC0 + ldr r7, _080E4EA4 @ =gScanlineEffect ldr r1, _080E4EAC @ =gTasks adds r0, r5, r6 lsls r0, 3 @@ -1395,7 +1395,7 @@ _080E4E94: .align 2, 0 _080E4E9C: .4byte gBattle_WIN0V _080E4EA0: .4byte 0xfffffc04 -_080E4EA4: .4byte gUnknown_03004DC0 +_080E4EA4: .4byte gScanlineEffect _080E4EA8: .4byte gUnknown_03004DE0 _080E4EAC: .4byte gTasks _080E4EB0: .4byte REG_BG1CNT diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 71788c918..9d9ead35b 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -532,7 +532,7 @@ sub_80C2448: @ 80C2448 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_8089668 + bl ScanlineEffect_TransferDma pop {r0} bx r0 .align 2, 0 diff --git a/asm/dark.s b/asm/dark.s index f3274861c..37fdace81 100755 --- a/asm/dark.s +++ b/asm/dark.s @@ -575,7 +575,7 @@ _080E0380: .align 2, 0 _080E0398: .4byte gBattle_WIN0H _080E039C: - ldr r1, _080E03AC @ =gUnknown_03004DC0 + ldr r1, _080E03AC @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080E03A2: @@ -584,7 +584,7 @@ _080E03A2: strh r0, [r4, 0x8] b _080E03B6 .align 2, 0 -_080E03AC: .4byte gUnknown_03004DC0 +_080E03AC: .4byte gScanlineEffect _080E03B0: adds r0, r2, 0 bl DestroyAnimVisualTask @@ -1043,7 +1043,7 @@ _080E0732: .align 2, 0 _080E0750: .4byte REG_BLDALPHA _080E0754: - ldr r1, _080E0764 @ =gUnknown_03004DC0 + ldr r1, _080E0764 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080E075A: @@ -1052,7 +1052,7 @@ _080E075A: strh r0, [r4, 0x8] b _080E0784 .align 2, 0 -_080E0764: .4byte gUnknown_03004DC0 +_080E0764: .4byte gScanlineEffect _080E0768: ldr r0, _080E078C @ =gBattle_WIN0H movs r1, 0 @@ -1104,7 +1104,7 @@ sub_80E079C: @ 80E079C ble _080E07FC ldr r0, _080E0888 @ =gUnknown_03004DE0 mov r12, r0 - ldr r7, _080E088C @ =gUnknown_03004DC0 + ldr r7, _080E088C @ =gScanlineEffect _080E07D0: lsls r2, r4, 16 asrs r2, 16 @@ -1138,7 +1138,7 @@ _080E07FC: bgt _080E0846 ldr r0, _080E0888 @ =gUnknown_03004DE0 mov r12, r0 - ldr r7, _080E088C @ =gUnknown_03004DC0 + ldr r7, _080E088C @ =gScanlineEffect _080E0810: asrs r4, r3, 16 cmp r4, 0 @@ -1180,7 +1180,7 @@ _080E0846: cmp r1, r0 bge _080E08BE ldr r7, _080E0888 @ =gUnknown_03004DE0 - ldr r4, _080E088C @ =gUnknown_03004DC0 + ldr r4, _080E088C @ =gScanlineEffect _080E085E: asrs r3, r2, 16 cmp r3, 0 @@ -1205,7 +1205,7 @@ _080E0876: b _080E08BE .align 2, 0 _080E0888: .4byte gUnknown_03004DE0 -_080E088C: .4byte gUnknown_03004DC0 +_080E088C: .4byte gScanlineEffect _080E0890: movs r1, 0x1C ldrsh r0, [r6, r1] diff --git a/asm/dragon.s b/asm/dragon.s index 7c4ea0547..c9a2d490a 100755 --- a/asm/dragon.s +++ b/asm/dragon.s @@ -630,7 +630,7 @@ _080DFA8A: bl sub_80DFAB0 b _080DFAAA _080DFA92: - ldr r1, _080DFAA0 @ =gUnknown_03004DC0 + ldr r1, _080DFAA0 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] ldrh r0, [r2, 0x8] @@ -638,7 +638,7 @@ _080DFA92: strh r0, [r2, 0x8] b _080DFAAA .align 2, 0 -_080DFAA0: .4byte gUnknown_03004DC0 +_080DFAA0: .4byte gScanlineEffect _080DFAA4: adds r0, r3, 0 bl DestroyAnimVisualTask @@ -663,7 +663,7 @@ sub_80DFAB0: @ 80DFAB0 mov r12, r7 ldr r0, _080DFB20 @ =gSineTable mov r8, r0 - ldr r6, _080DFB24 @ =gUnknown_03004DC0 + ldr r6, _080DFB24 @ =gScanlineEffect _080DFACE: lsls r2, r4, 1 ldrb r1, [r6, 0x14] @@ -707,7 +707,7 @@ _080DFB06: .align 2, 0 _080DFB1C: .4byte gUnknown_03004DE0 _080DFB20: .4byte gSineTable -_080DFB24: .4byte gUnknown_03004DC0 +_080DFB24: .4byte gScanlineEffect thumb_func_end sub_80DFAB0 thumb_func_start sub_80DFB28 diff --git a/asm/ghost.s b/asm/ghost.s index 0db176d08..daf7cd9a5 100755 --- a/asm/ghost.s +++ b/asm/ghost.s @@ -1334,7 +1334,7 @@ _080DE584: _080DE59C: movs r2, 0x2 movs r3, 0x6 - bl sub_8089944 + bl ScanlineEffect_InitWave lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x1C] @@ -1507,7 +1507,7 @@ _080DE6E8: beq _080DE740 b _080DE7AA _080DE6EE: - ldr r1, _080DE710 @ =gUnknown_03004DC0 + ldr r1, _080DE710 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] movs r0, 0x1 @@ -1523,7 +1523,7 @@ _080DE6EE: ldr r0, _080DE714 @ =0x0000fdff b _080DE720 .align 2, 0 -_080DE710: .4byte gUnknown_03004DC0 +_080DE710: .4byte gScanlineEffect _080DE714: .4byte 0x0000fdff _080DE718: movs r2, 0x80 diff --git a/asm/ground.s b/asm/ground.s index fd4cecbfd..00abfd4f3 100755 --- a/asm/ground.s +++ b/asm/ground.s @@ -631,7 +631,7 @@ _080E13D6: _080E13F8: .4byte gBattle_BG2_Y _080E13FC: .4byte gSprites _080E1400: - ldr r1, _080E1410 @ =gUnknown_03004DC0 + ldr r1, _080E1410 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080E1406: @@ -640,7 +640,7 @@ _080E1406: strh r0, [r4, 0x8] b _080E1432 .align 2, 0 -_080E1410: .4byte gUnknown_03004DC0 +_080E1410: .4byte gScanlineEffect _080E1414: adds r0, r2, 0 bl DestroyAnimVisualTask @@ -925,7 +925,7 @@ _080E161C: ldrsh r0, [r0, r1] cmp r0, 0 bne _080E1662 - ldr r1, _080E1658 @ =gUnknown_03004DC0 + ldr r1, _080E1658 @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080E164A: @@ -935,7 +935,7 @@ _080E164A: b _080E1662 .align 2, 0 _080E1654: .4byte gSprites -_080E1658: .4byte gUnknown_03004DC0 +_080E1658: .4byte gScanlineEffect _080E165C: adds r0, r2, 0 bl DestroyAnimVisualTask diff --git a/asm/pokenav.s b/asm/pokenav.s index 7c766addc..3e410872e 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -11013,14 +11013,14 @@ _080F5BD8: .4byte gUnknown_083E4990 thumb_func_start sub_80F5BDC sub_80F5BDC: @ 80F5BDC push {lr} - ldr r1, _080F5BEC @ =gUnknown_03004DC0 + ldr r1, _080F5BEC @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] - bl sub_8089668 + bl ScanlineEffect_TransferDma pop {r0} bx r0 .align 2, 0 -_080F5BEC: .4byte gUnknown_03004DC0 +_080F5BEC: .4byte gScanlineEffect thumb_func_end sub_80F5BDC thumb_func_start sub_80F5BF0 diff --git a/asm/psychic.s b/asm/psychic.s index 20e558bf6..bdc230dcb 100755 --- a/asm/psychic.s +++ b/asm/psychic.s @@ -1753,7 +1753,7 @@ _080DC4BE: ble _080DC4E6 b _080DC4D4 _080DC4CE: - ldr r1, _080DC4DC @ =gUnknown_03004DC0 + ldr r1, _080DC4DC @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _080DC4D4: @@ -1762,7 +1762,7 @@ _080DC4D4: strh r0, [r5, 0x8] b _080DC4E6 .align 2, 0 -_080DC4DC: .4byte gUnknown_03004DC0 +_080DC4DC: .4byte gScanlineEffect _080DC4E0: adds r0, r2, 0 bl DestroyAnimVisualTask diff --git a/asm/water.s b/asm/water.s index d72f9438c..4336374aa 100755 --- a/asm/water.s +++ b/asm/water.s @@ -476,7 +476,7 @@ _080D3EE8: cmp r3, r0 bge _080D3F1C ldr r6, _080D3F80 @ =gUnknown_03004DE0 - ldr r5, _080D3F84 @ =gUnknown_03004DC0 + ldr r5, _080D3F84 @ =gScanlineEffect _080D3EF6: lsls r1, r3, 16 asrs r1, 16 @@ -506,7 +506,7 @@ _080D3F1C: cmp r1, r0 bge _080D3F50 ldr r6, _080D3F80 @ =gUnknown_03004DE0 - ldr r5, _080D3F84 @ =gUnknown_03004DC0 + ldr r5, _080D3F84 @ =gScanlineEffect _080D3F2E: asrs r3, r2, 16 lsls r2, r3, 1 @@ -532,7 +532,7 @@ _080D3F50: cmp r0, 0x9F bgt _080D4032 ldr r6, _080D3F80 @ =gUnknown_03004DE0 - ldr r5, _080D3F84 @ =gUnknown_03004DC0 + ldr r5, _080D3F84 @ =gScanlineEffect _080D3F5E: asrs r3, r1, 16 lsls r2, r3, 1 @@ -552,7 +552,7 @@ _080D3F5E: b _080D4032 .align 2, 0 _080D3F80: .4byte gUnknown_03004DE0 -_080D3F84: .4byte gUnknown_03004DC0 +_080D3F84: .4byte gScanlineEffect _080D3F88: movs r3, 0 movs r1, 0x10 @@ -560,7 +560,7 @@ _080D3F88: cmp r3, r0 bge _080D3FBC ldr r6, _080D403C @ =gUnknown_03004DE0 - ldr r5, _080D4040 @ =gUnknown_03004DC0 + ldr r5, _080D4040 @ =gScanlineEffect _080D3F96: lsls r1, r3, 16 asrs r1, 16 @@ -590,7 +590,7 @@ _080D3FBC: cmp r1, r0 bge _080D3FF0 ldr r6, _080D403C @ =gUnknown_03004DE0 - ldr r5, _080D4040 @ =gUnknown_03004DC0 + ldr r5, _080D4040 @ =gScanlineEffect _080D3FCE: asrs r3, r2, 16 lsls r2, r3, 1 @@ -616,7 +616,7 @@ _080D3FF0: cmp r0, 0x9F bgt _080D401C ldr r6, _080D403C @ =gUnknown_03004DE0 - ldr r5, _080D4040 @ =gUnknown_03004DC0 + ldr r5, _080D4040 @ =gScanlineEffect _080D3FFE: asrs r3, r1, 16 lsls r2, r3, 1 @@ -640,7 +640,7 @@ _080D401C: negs r0, r0 cmp r1, r0 bne _080D4032 - bl remove_some_task + bl ScanlineEffect_Stop adds r0, r7, 0 bl DestroyTask _080D4032: @@ -650,7 +650,7 @@ _080D4032: bx r0 .align 2, 0 _080D403C: .4byte gUnknown_03004DE0 -_080D4040: .4byte gUnknown_03004DC0 +_080D4040: .4byte gScanlineEffect thumb_func_end sub_80D3D68 thumb_func_start sub_80D4044 diff --git a/include/scanline_effect.h b/include/scanline_effect.h index 011e5f5b5..b28973eb3 100644 --- a/include/scanline_effect.h +++ b/include/scanline_effect.h @@ -1,5 +1,5 @@ -#ifndef GUARD_UNKNOWN_TASK_H -#define GUARD_UNKNOWN_TASK_H +#ifndef GUARD_SCANLINE_EFFECT_H +#define GUARD_SCANLINE_EFFECT_H struct UnknownTaskStruct { @@ -9,7 +9,7 @@ struct UnknownTaskStruct u8 unk9; }; -struct UnknownTaskStruct2 +struct ScanlineEffect { void *src[2]; volatile void *dest; @@ -23,20 +23,20 @@ struct UnknownTaskStruct2 u8 filler19[0x7]; }; -extern struct UnknownTaskStruct2 gUnknown_03004DC0; +extern struct ScanlineEffect gScanlineEffect; extern u16 gUnknown_03004DE0[][0x3C0]; -void remove_some_task(void); -void remove_some_task(void); +void ScanlineEffect_Stop(void); +void ScanlineEffect_Stop(void); void dp12_8087EA4(void); void dp12_8087EA4(void); //void sub_80895F8(u32 i, u32 i1, u32 i2); //void sub_80895F8(); void sub_80895F8(struct UnknownTaskStruct unk); -void sub_8089668(void); -void sub_8089668(); -//void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6); -u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); +void ScanlineEffect_TransferDma(void); +void ScanlineEffect_TransferDma(); +//void ScanlineEffect_InitWave(int i, int i1, int i2, int i3, int i4, int i5, int i6); +u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); -#endif // GUARD_UNKNOWN_TASK_H +#endif // GUARD_SCANLINE_EFFECT_H diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index 0508eed8c..ac1ae08cb 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -97,7 +97,7 @@ void sub_80D0D68(u8 taskId) if (++task->data[3] >= task->data[15]) { - gUnknown_03004DC0.unk15 = 3; + gScanlineEffect.unk15 = 3; DestroyAnimVisualTask(taskId); } } @@ -202,7 +202,7 @@ _080D0E04:\n\ ldrsh r1, [r3, r2]\n\ cmp r0, r1\n\ blt _080D0E22\n\ - ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\ + ldr r1, _080D0E2C @ =gScanlineEffect\n\ movs r0, 0x3\n\ strb r0, [r1, 0x15]\n\ adds r0, r4, 0\n\ @@ -213,7 +213,7 @@ _080D0E22:\n\ bx r0\n\ .align 2, 0\n\ _080D0E28: .4byte gUnknown_03004DE0\n\ -_080D0E2C: .4byte gUnknown_03004DC0\n\ +_080D0E2C: .4byte gScanlineEffect\n\ .syntax divided\n"); } #endif diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 20daf4052..da6c9a2b4 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1073,7 +1073,7 @@ void sub_800FCFC(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void nullsub_36(struct Sprite *sprite) diff --git a/src/contest.c b/src/contest.c index 9f8fe976a..e39ce3daa 100644 --- a/src/contest.c +++ b/src/contest.c @@ -635,7 +635,7 @@ void ContestVBlankCallback(void) TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80ABB70(u8 taskId) diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 25890e3ea..85a8800e7 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -516,7 +516,7 @@ static void sub_80AA090(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void sub_80AA10C(void) diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index a5fc1dee9..7ca647b93 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -298,7 +298,7 @@ void sub_80E62F8(void) ResetPaletteFade(); ResetSpriteData(); dp12_8087EA4(); - remove_some_task(); + ScanlineEffect_Stop(); sub_80EAD08(); sub_80895F8(gUnknown_083DB698); FreeSpriteTileRanges(); @@ -655,7 +655,7 @@ void sub_80E6A6C(void) ProcessSpriteCopyRequests(); sub_80EAC5C(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80E6A88(void) diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 48e005cab..0f12b978d 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + r4 = gUnknown_03004DE0[gScanlineEffect.srcBank]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/main.c b/src/engine/main.c index d1ccffea0..1bed4080b 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -350,7 +350,7 @@ void DoSoftReset(void) { REG_IME = 0; m4aSoundVSyncOff(); - remove_some_task(); + ScanlineEffect_Stop(); DmaStop(1); DmaStop(2); DmaStop(3); diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 3402d93bc..a0b8b7020 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -229,7 +229,7 @@ u32 InitMainMenu(u8 a1) ResetPaletteFade(); LoadPalette(gMainMenuPalette, 0, 32); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -763,7 +763,7 @@ static void Task_NewGameSpeech1(u8 taskId) LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800)); LoadPalette(gUnknown_081E764C, 0, 0x40); LoadPalette(gUnknown_081E796C, 1, 0x10); - remove_some_task(); + ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); @@ -1368,7 +1368,7 @@ void CB_ContinueNewGameSpeechPart2() gTasks[taskId].tBGhofs = -60; - remove_some_task(); + ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index 868830880..cb5f66649 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -8,7 +8,7 @@ #include "task.h" extern void SetPokemonCryStereo(u32 val); -extern void remove_some_task(void); +extern void ScanlineEffect_Stop(void); //Task data enum { @@ -110,7 +110,7 @@ void CB2_InitOptionMenu(void) } case 1: ResetPaletteFade(); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); gMain.state++; diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 5297b3378..d077bc670 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -438,7 +438,7 @@ void CB2_InitResetRtcScreen(void) ResetOamRange(0, 128); LoadOam(); - remove_some_task(); + ScanlineEffect_Stop(); dp12_8087EA4(); ResetSpriteData(); ResetTasks(); diff --git a/src/field/diploma.c b/src/field/diploma.c index 70e4e4349..978eca7eb 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -62,7 +62,7 @@ void CB2_ShowDiploma(void) LZ77UnCompVram(gDiplomaTiles, (void *)VRAM); LZ77UnCompVram(gDiplomaTilemap, (void *)(VRAM + 0x3000)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index 5f5113a2f..b5141e7ea 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -64,18 +64,18 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) { if (data[6] == 1) { - remove_some_task(); + ScanlineEffect_Stop(); data[0] = 2; } else diff --git a/src/field/item_menu.c b/src/field/item_menu.c index fe896ac51..e0575af4c 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -397,7 +397,7 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/overworld.c b/src/field/overworld.c index 75e3aa6d5..e90fc6396 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1410,7 +1410,7 @@ void VBlankCB_Field(void) { LoadOam(); ProcessSpriteCopyRequests(); - sub_8089668(); + ScanlineEffect_TransferDma(); sub_8057A58(); TransferPlttBuffer(); sub_8072E74(); @@ -1669,7 +1669,7 @@ void sub_8054BA8(void) REG_DISPCNT = 0; - remove_some_task(); + ScanlineEffect_Stop(); DmaClear16(3, PLTT + 2, PLTT_SIZE - 2); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7e443a116..7d243f569 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -648,7 +648,7 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index ea96a4efd..7e8bdc2ce 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -255,7 +255,7 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/shop.c b/src/field/shop.c index a3e361733..1dc6ba0cd 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -266,7 +266,7 @@ void BuyMenuDrawGraphics(void) register u16 zero2 asm("r5"); sub_80F9438(); - remove_some_task(); + ScanlineEffect_Stop(); REG_BG1HOFS = (zero2 = 0); REG_BG1VOFS = zero2; REG_BG2HOFS = zero2; diff --git a/src/field/start_menu.c b/src/field/start_menu.c index d7d0282c6..6017f56bf 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -750,7 +750,7 @@ static bool32 sub_80719FC(u8 *step) REG_DISPCNT = 0; SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); DmaClear16(3, PLTT, PLTT_SIZE); addr = (void *)VRAM; size = 0x18000; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index d3cfba1e3..418488774 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -285,7 +285,7 @@ void CB2_ChooseStarter(void) LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000)); LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 9363498ba..4af7be386 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -117,7 +117,7 @@ static void sub_81365A0(void); static void sub_81365C8(void); static void sub_8136638(void); static void sub_81368A4(void); -void sub_8089668(void); +void ScanlineEffect_TransferDma(void); static void sub_8136B44(void); static u8 sub_81370E4(u8); static void sub_8136BB8(void); @@ -194,7 +194,7 @@ static void sub_8136264(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5CDC(6); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) diff --git a/src/field/wallclock.c b/src/field/wallclock.c index bc12db819..aaa7f9ae8 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -229,7 +229,7 @@ static void LoadWallClockGraphics(void) LoadPalette(gMiscClockMale_Pal, 0, 32); else LoadPalette(gMiscClockFemale_Pal, 0, 32); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 95424e890..921a3ad93 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -320,7 +320,7 @@ static u8 sub_80F8A28(void) { case 0: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); REG_DISPCNT = 0; RETURN_UP_STATE; diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 306cac3c9..4fb6a4920 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1419,7 +1419,7 @@ void CB2_InitPokedex(void) } break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); @@ -1494,7 +1494,7 @@ u8 unref_sub_808C540(void (*func)(u8)) SetVBlankCallback(NULL); sub_8091060(0x200); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetPaletteFade(); savedIme = REG_IME; diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 4e2be1418..ec327796a 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -701,7 +701,7 @@ bool8 sub_809DA84(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/pokenav_before.c b/src/pokenav_before.c index fb197cee2..7439fc077 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -329,7 +329,7 @@ void sub_80EBA5C() ResetTasks(); break; case 6: - remove_some_task(); + ScanlineEffect_Stop(); break; case 7: sub_80F1A90(); @@ -436,7 +436,7 @@ void sub_80EBD4C() ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5BF0(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80EBD68() diff --git a/src/roulette.c b/src/roulette.c index ae16b1460..6d79f9d38 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -578,7 +578,7 @@ void sub_8115384(void) { case 0x0: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); sub_80F9438(); sub_80F9368(); REG_BG2CNT = 0x4686; diff --git a/src/scanline_effect.c b/src/scanline_effect.c index 670f2d9b3..e9cf0d02a 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -4,6 +4,9 @@ #include "trig.h" #include "scanline_effect.h" +// Control value to ransfer a single 16-bit value at HBlank +#define HBLANK_DMA_CONTROL_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1) + static void sub_80896F4(void); static void sub_8089714(void); @@ -18,89 +21,89 @@ extern u16 gBattle_BG1_X; extern u8 gUnknown_0202FFA4; -extern struct UnknownTaskStruct2 gUnknown_03004DC0; +extern struct ScanlineEffect gScanlineEffect; // Is this a struct? extern u16 gUnknown_03004DE0[][0x3C0]; -void remove_some_task(void) +void ScanlineEffect_Stop(void) { - gUnknown_03004DC0.unk15 = 0; + gScanlineEffect.unk15 = 0; DmaStop(0); - if (gUnknown_03004DC0.taskId != 0xFF) + if (gScanlineEffect.taskId != 0xFF) { - DestroyTask(gUnknown_03004DC0.taskId); - gUnknown_03004DC0.taskId = 0xFF; + DestroyTask(gScanlineEffect.taskId); + gScanlineEffect.taskId = 0xFF; } } void dp12_8087EA4(void) { CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gUnknown_03004DC0.src[0] = 0; - gUnknown_03004DC0.src[1] = 0; - gUnknown_03004DC0.dest = 0; - gUnknown_03004DC0.unkC = 0; - gUnknown_03004DC0.srcBank = 0; - gUnknown_03004DC0.unk15 = 0; - gUnknown_03004DC0.unk16 = 0; - gUnknown_03004DC0.unk17 = 0; - gUnknown_03004DC0.taskId = 0xFF; + gScanlineEffect.src[0] = 0; + gScanlineEffect.src[1] = 0; + gScanlineEffect.dest = 0; + gScanlineEffect.unkC = 0; + gScanlineEffect.srcBank = 0; + gScanlineEffect.unk15 = 0; + gScanlineEffect.unk16 = 0; + gScanlineEffect.unk17 = 0; + gScanlineEffect.taskId = 0xFF; } void sub_80895F8(struct UnknownTaskStruct unk) { - if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) + if (unk.control == HBLANK_DMA_CONTROL_16BIT) // 16 bit { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; - gUnknown_03004DC0.unk10 = sub_80896F4; + gScanlineEffect.src[0] = &gUnknown_03004DE0[0][1]; + gScanlineEffect.src[1] = &gUnknown_03004DE0[1][1]; + gScanlineEffect.unk10 = sub_80896F4; } - else + else // assume 32-bit { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; - gUnknown_03004DC0.unk10 = sub_8089714; + gScanlineEffect.src[0] = &gUnknown_03004DE0[0][2]; + gScanlineEffect.src[1] = &gUnknown_03004DE0[1][2]; + gScanlineEffect.unk10 = sub_8089714; } - gUnknown_03004DC0.unkC = unk.control; - gUnknown_03004DC0.dest = unk.dest; - gUnknown_03004DC0.unk15 = unk.unk8; - gUnknown_03004DC0.unk16 = unk.unk9; - gUnknown_03004DC0.unk17 = unk.unk9; + gScanlineEffect.unkC = unk.control; + gScanlineEffect.dest = unk.dest; + gScanlineEffect.unk15 = unk.unk8; + gScanlineEffect.unk16 = unk.unk9; + gScanlineEffect.unk17 = unk.unk9; } -void sub_8089668(void) +void ScanlineEffect_TransferDma(void) { - if (gUnknown_03004DC0.unk15) + if (gScanlineEffect.unk15) { - if (gUnknown_03004DC0.unk15 == 3) + if (gScanlineEffect.unk15 == 3) { - gUnknown_03004DC0.unk15 = 0; + gScanlineEffect.unk15 = 0; DmaStop(0); gUnknown_0202FFA4 = 1; } else { DmaStop(0); - DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); - gUnknown_03004DC0.unk10(); - gUnknown_03004DC0.srcBank ^= 1; + DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dest, gScanlineEffect.unkC); + gScanlineEffect.unk10(); + gScanlineEffect.srcBank ^= 1; } } } static void sub_80896F4(void) { - u16 *dest = (u16 *)gUnknown_03004DC0.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + u16 *dest = (u16 *)gScanlineEffect.dest; + u16 *src = (u16 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; *dest = *src; } static void sub_8089714(void) { - u32 *dest = (u32 *)gUnknown_03004DC0.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + u32 *dest = (u32 *)gScanlineEffect.dest; + u32 *src = (u32 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; *dest = *src; } @@ -111,7 +114,7 @@ static void task00_for_dp12(u8 taskId) if (gUnknown_0202FFA4) { DestroyTask(taskId); - gUnknown_03004DC0.taskId = 0xFF; + gScanlineEffect.taskId = 0xFF; } else { @@ -153,7 +156,7 @@ static void task00_for_dp12(u8 taskId) offset = gTasks[taskId].data[3] + 320; for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; offset++; } } @@ -165,7 +168,7 @@ static void task00_for_dp12(u8 taskId) offset = gTasks[taskId].data[3] + 320; for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; offset++; } gTasks[taskId].data[3]++; @@ -177,20 +180,20 @@ static void task00_for_dp12(u8 taskId) } } -static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) +static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) { u16 i = 0; - u8 offset = 0; + u8 theta = 0; - while (i < 0x100) + while (i < 256) { - a1[i] = (gSineTable[offset] * a3) / 256; - offset += a2; + buffer[i] = (gSineTable[theta] * amplitude) / 256; + theta += frequency; i++; } } -u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 frequency, u8 amplitude, u8 a5, u8 a6, u8 a7) { int i; int offset; @@ -200,7 +203,7 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) dp12_8087EA4(); unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; + unk.control = HBLANK_DMA_CONTROL_16BIT; unk.unk8 = 1; unk.unk9 = 0; @@ -210,17 +213,17 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) gTasks[taskId].data[0] = a1; gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / a3; + gTasks[taskId].data[2] = 256 / frequency; gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = a5; gTasks[taskId].data[5] = a5; gTasks[taskId].data[6] = a6; gTasks[taskId].data[7] = a7; - gUnknown_03004DC0.taskId = taskId; + gScanlineEffect.taskId = taskId; gUnknown_0202FFA4 = 0; - sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); + GenerateWave(&gUnknown_03004DE0[0][320], frequency, amplitude, a2 - a1); offset = 320; diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index bae037ff7..d8e099130 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -208,7 +208,7 @@ static void CableCarMainCallback_Setup(void) case 0: default: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, OAM, OAM_SIZE); DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 3b68f0143..3aa898b03 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -147,7 +147,7 @@ static void ShowContestPainting(void) switch (gMain.state) { case 0: - remove_some_task(); + ScanlineEffect_Stop(); SetVBlankCallback(NULL); gUnknown_03005E8C = &ewram15DE0; ContestPaintingInitVars(TRUE); diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index dcca1fddb..54af6013f 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -215,7 +215,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, sub_800D6D4(); sub_800DAB8(); ResetSpriteData(); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); FreeAllSpritePalettes(); @@ -3934,7 +3934,7 @@ static void VBlankCB_EvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void VBlankCB_TradeEvolutionScene(void) @@ -3950,7 +3950,7 @@ static void VBlankCB_TradeEvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void sub_81150D8(void) diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 948c288ff..f39745c02 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -95,7 +95,7 @@ bool8 sub_80C5DCC(void); bool8 sub_80C5F98(void); void ReturnFromHallOfFamePC(void); u16 SpeciesToPokedexNum(u16 species); -void remove_some_task(void); +void ScanlineEffect_Stop(void); // data and gfx @@ -1278,7 +1278,7 @@ static void sub_81433E0(void) static void sub_8143570(void) { - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/scene/intro.c b/src/scene/intro.c index beceb6e90..d7d772a40 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -873,7 +873,7 @@ static u8 SetUpCopyrightScreen(void) DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); LoadCopyrightGraphics(0, 0x3800, 0); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index bd41ac641..ca4194800 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -598,7 +598,7 @@ static void StartPokemonLogoShine(bool8 flashBackground) static void VBlankCB(void) { - sub_8089668(); + ScanlineEffect_TransferDma(); LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -644,7 +644,7 @@ void CB2_InitTitleScreen(void) LZ77UnCompVram(sLegendaryMonTilemap, (void *)(VRAM + 0xC000)); LZ77UnCompVram(sBackdropTilemap, (void *)(VRAM + 0xC800)); LoadPalette(sLegendaryMonPalettes, 0xE0, sizeof(sLegendaryMonPalettes)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - sub_8089944(0, 0xA0, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, 0xA0, 4, 4, 0, 4, 1); SetMainCallback2(MainCB2); } break; diff --git a/sym_common.txt b/sym_common.txt index f620e9e49..8defbe866 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -139,7 +139,7 @@ gUnknown_03004AE4: @ 3004AE4 @ unknown_task .align 4 -gUnknown_03004DC0: @ 3004DC0 +gScanlineEffect: @ 3004DC0 .space 0x20 gUnknown_03004DE0: @ 3004DE0 -- cgit v1.2.3 From beac14a9a0ab072186fa99afcfcc0d844b77a68d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 12:12:55 -0600 Subject: label more of scanline_effect.c --- asm/battle_anim_812C144.s | 26 +++--- asm/battle_intro.s | 24 +++--- asm/contest_link_80C2020.s | 2 +- asm/dark.s | 24 +++--- asm/dragon.s | 10 +-- asm/ground.s | 8 +- asm/pokenav.s | 16 ++-- asm/psychic.s | 10 +-- asm/water.s | 26 +++--- common_syms/scanline_effect.txt | 2 + include/data2.h | 4 +- include/scanline_effect.h | 27 ++++--- src/battle/anim/draw.c | 28 ++++--- src/battle/battle_2.c | 22 +++--- src/battle/battle_transition.c | 148 +++++++++++++++++----------------- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 6 +- src/easy_chat_2.c | 2 +- src/engine/trainer_card.c | 28 +++---- src/field/field_screen_effect.c | 18 ++--- src/field/overworld.c | 6 +- src/field/use_pokeblock.c | 4 +- src/pokenav_before.c | 2 +- src/scanline_effect.c | 170 +++++++++++++++++++++++----------------- src/scene/evolution_scene.c | 4 +- src/scene/title_screen.c | 4 +- sym_common.txt | 24 +----- sym_ewram.txt | 7 +- 29 files changed, 328 insertions(+), 328 deletions(-) create mode 100644 common_syms/scanline_effect.txt diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index 5fc9199eb..8a6a8fffa 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -1752,7 +1752,7 @@ _0812CE70: ldrsh r0, [r5, r6] cmp r1, r0 bgt _0812CEA6 - ldr r4, _0812CEB0 @ =gUnknown_03004DE0 + ldr r4, _0812CEB0 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r0, r4 @@ -1777,7 +1777,7 @@ _0812CEA6: ldr r0, _0812CEB4 @ =REG_BG1HOFS b _0812CEBA .align 2, 0 -_0812CEB0: .4byte gUnknown_03004DE0 +_0812CEB0: .4byte gScanlineEffectRegBuffers _0812CEB4: .4byte REG_BG1HOFS _0812CEB8: ldr r0, _0812CEE4 @ =REG_BG2HOFS @@ -1794,7 +1794,7 @@ _0812CEBA: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams ldr r0, _0812CEEC @ =sub_812CEF0 str r0, [r5] add sp, 0xC @@ -1889,7 +1889,7 @@ _0812CF74: ldrsh r0, [r4, r2] cmp r1, r0 bge _0812CFA8 - ldr r5, _0812D000 @ =gUnknown_03004DE0 + ldr r5, _0812D000 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -1917,7 +1917,7 @@ _0812CFA8: ldrsh r0, [r4, r2] cmp r1, r0 bgt _0812CFDC - ldr r5, _0812D000 @ =gUnknown_03004DE0 + ldr r5, _0812D000 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -1957,7 +1957,7 @@ _0812CFF8: pop {r0} bx r0 .align 2, 0 -_0812D000: .4byte gUnknown_03004DE0 +_0812D000: .4byte gScanlineEffectRegBuffers _0812D004: .4byte gScanlineEffect thumb_func_end sub_812CEF0 @@ -6545,7 +6545,7 @@ _0812F3EE: ldrh r3, [r0] movs r7, 0 movs r2, 0 - ldr r6, _0812F468 @ =gUnknown_03004DE0 + ldr r6, _0812F468 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r0, r6 @@ -6586,7 +6586,7 @@ _0812F3FE: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams ldr r0, _0812F470 @ =sub_812F474 str r0, [r4] add sp, 0xC @@ -6599,7 +6599,7 @@ _0812F458: .4byte REG_BLDCNT _0812F45C: .4byte 0x00003f44 _0812F460: .4byte gBattle_BG2_X _0812F464: .4byte gBattle_BG2_Y -_0812F468: .4byte gUnknown_03004DE0 +_0812F468: .4byte gScanlineEffectRegBuffers _0812F46C: .4byte 0xa6600001 _0812F470: .4byte sub_812F474 thumb_func_end sub_812F314 @@ -6732,7 +6732,7 @@ _0812F55A: subs r0, r1 lsls r0, 7 adds r2, r0 - ldr r0, _0812F664 @ =gUnknown_03004DE0 + ldr r0, _0812F664 @ =gScanlineEffectRegBuffers adds r2, r0 lsls r4, 16 asrs r4, 16 @@ -6750,7 +6750,7 @@ _0812F55A: subs r0, r1 lsls r0, 7 adds r3, r0 - ldr r1, _0812F664 @ =gUnknown_03004DE0 + ldr r1, _0812F664 @ =gScanlineEffectRegBuffers adds r3, r1 lsls r1, r7, 16 asrs r1, 16 @@ -6814,7 +6814,7 @@ _0812F60A: lsls r1, r2, 17 cmp r1, 0 blt _0812F636 - ldr r4, _0812F664 @ =gUnknown_03004DE0 + ldr r4, _0812F664 @ =gScanlineEffectRegBuffers ldr r7, [sp, 0x4] lsls r0, r7, 16 asrs r0, 16 @@ -6857,7 +6857,7 @@ _0812F636: b _0812F676 .align 2, 0 _0812F660: .4byte gScanlineEffect -_0812F664: .4byte gUnknown_03004DE0 +_0812F664: .4byte gScanlineEffectRegBuffers _0812F668: .4byte gSineTable _0812F66C: .4byte 0xffff0000 _0812F670: diff --git a/asm/battle_intro.s b/asm/battle_intro.s index 16689a911..3f3c58a65 100755 --- a/asm/battle_intro.s +++ b/asm/battle_intro.s @@ -301,7 +301,7 @@ _080E45FE: movs r3, 0 ldr r5, _080E46A0 @ =gScanlineEffect mov r9, r5 - ldr r7, _080E46A4 @ =gUnknown_03004DE0 + ldr r7, _080E46A4 @ =gScanlineEffectRegBuffers mov r6, r9 adds r5, r1, 0 _080E460A: @@ -319,7 +319,7 @@ _080E460A: ble _080E460A cmp r3, 0x9F bgt _080E464E - ldr r7, _080E46A4 @ =gUnknown_03004DE0 + ldr r7, _080E46A4 @ =gScanlineEffectRegBuffers ldr r6, _080E46A0 @ =gScanlineEffect ldr r1, _080E46A8 @ =gTasks mov r2, r12 @@ -378,7 +378,7 @@ _080E4694: .4byte 0x0000ffc8 _080E4698: .4byte gBattle_WIN0V _080E469C: .4byte 0xfffffc04 _080E46A0: .4byte gScanlineEffect -_080E46A4: .4byte gUnknown_03004DE0 +_080E46A4: .4byte gScanlineEffectRegBuffers _080E46A8: .4byte gTasks _080E46AC: .4byte 0x0600e000 _080E46B0: .4byte 0x05000200 @@ -671,7 +671,7 @@ _080E48E0: movs r3, 0 ldr r4, _080E4978 @ =gScanlineEffect mov r8, r4 - ldr r0, _080E497C @ =gUnknown_03004DE0 + ldr r0, _080E497C @ =gScanlineEffectRegBuffers mov r12, r0 mov r7, r8 adds r4, r1, 0 @@ -690,7 +690,7 @@ _080E48EE: ble _080E48EE cmp r3, 0x9F bgt _080E4932 - ldr r1, _080E497C @ =gUnknown_03004DE0 + ldr r1, _080E497C @ =gScanlineEffectRegBuffers mov r12, r1 ldr r7, _080E4978 @ =gScanlineEffect ldr r1, _080E4980 @ =gTasks @@ -746,7 +746,7 @@ _080E4932: _080E4970: .4byte gBattle_WIN0V _080E4974: .4byte 0xfffffc04 _080E4978: .4byte gScanlineEffect -_080E497C: .4byte gUnknown_03004DE0 +_080E497C: .4byte gScanlineEffectRegBuffers _080E4980: .4byte gTasks _080E4984: .4byte 0x0600e000 _080E4988: .4byte 0x05000200 @@ -980,7 +980,7 @@ _080E4B50: movs r3, 0 ldr r6, _080E4BE8 @ =gScanlineEffect mov r8, r6 - ldr r7, _080E4BEC @ =gUnknown_03004DE0 + ldr r7, _080E4BEC @ =gScanlineEffectRegBuffers adds r5, r1, 0 _080E4B5A: lsls r2, r3, 1 @@ -997,7 +997,7 @@ _080E4B5A: ble _080E4B5A cmp r3, 0x9F bgt _080E4B9E - ldr r7, _080E4BEC @ =gUnknown_03004DE0 + ldr r7, _080E4BEC @ =gScanlineEffectRegBuffers ldr r6, _080E4BE8 @ =gScanlineEffect ldr r1, _080E4BF0 @ =gTasks mov r2, r12 @@ -1054,7 +1054,7 @@ _080E4B9E: _080E4BE0: .4byte gBattle_WIN0V _080E4BE4: .4byte 0xfffffc04 _080E4BE8: .4byte gScanlineEffect -_080E4BEC: .4byte gUnknown_03004DE0 +_080E4BEC: .4byte gScanlineEffectRegBuffers _080E4BF0: .4byte gTasks _080E4BF4: .4byte 0x0600e000 _080E4BF8: .4byte 0x05000200 @@ -1325,7 +1325,7 @@ _080E4E16: movs r3, 0 ldr r0, _080E4EA4 @ =gScanlineEffect mov r9, r0 - ldr r2, _080E4EA8 @ =gUnknown_03004DE0 + ldr r2, _080E4EA8 @ =gScanlineEffectRegBuffers mov r8, r2 mov r7, r9 adds r4, r1, 0 @@ -1344,7 +1344,7 @@ _080E4E24: ble _080E4E24 cmp r3, 0x9F bgt _080E4E68 - ldr r0, _080E4EA8 @ =gUnknown_03004DE0 + ldr r0, _080E4EA8 @ =gScanlineEffectRegBuffers mov r8, r0 ldr r7, _080E4EA4 @ =gScanlineEffect ldr r1, _080E4EAC @ =gTasks @@ -1396,7 +1396,7 @@ _080E4E94: _080E4E9C: .4byte gBattle_WIN0V _080E4EA0: .4byte 0xfffffc04 _080E4EA4: .4byte gScanlineEffect -_080E4EA8: .4byte gUnknown_03004DE0 +_080E4EA8: .4byte gScanlineEffectRegBuffers _080E4EAC: .4byte gTasks _080E4EB0: .4byte REG_BG1CNT _080E4EB4: diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 9d9ead35b..9cf156f07 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -532,7 +532,7 @@ sub_80C2448: @ 80C2448 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl ScanlineEffect_TransferDma + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 .align 2, 0 diff --git a/asm/dark.s b/asm/dark.s index 37fdace81..9e09d8fbe 100755 --- a/asm/dark.s +++ b/asm/dark.s @@ -386,7 +386,7 @@ _080E01F4: movs r0, 0x3 bl sub_80E08CC movs r3, 0 - ldr r4, _080E0290 @ =gUnknown_03004DE0 + ldr r4, _080E0290 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r4, r0 @@ -406,7 +406,7 @@ _080E0220: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams ldr r1, _080E0294 @ =REG_WINOUT movs r0, 0x3F eors r7, r0 @@ -441,7 +441,7 @@ _080E0280: .4byte 0x00003f44 _080E0284: .4byte REG_BG2VOFS _080E0288: .4byte gBattle_BG1_X _080E028C: .4byte 0xa2600001 -_080E0290: .4byte gUnknown_03004DE0 +_080E0290: .4byte gScanlineEffectRegBuffers _080E0294: .4byte REG_WINOUT _080E0298: .4byte gBattle_WIN0H _080E029C: .4byte gBattle_WIN0V @@ -786,7 +786,7 @@ _080E054E: str r0, [sp, 0xC] movs r3, 0 add r4, sp, 0xC - ldr r6, _080E059C @ =gUnknown_03004DE0 + ldr r6, _080E059C @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r7, r6, r0 @@ -815,7 +815,7 @@ _080E055C: strb r2, [r4, 0x9] ldr r0, [sp, 0xC] ldr r2, [r4, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams _080E0590: ldrh r0, [r5, 0x8] adds r0, 0x1 @@ -823,7 +823,7 @@ _080E0590: b _080E05F2 .align 2, 0 _080E0598: .4byte REG_BG2VOFS -_080E059C: .4byte gUnknown_03004DE0 +_080E059C: .4byte gScanlineEffectRegBuffers _080E05A0: .4byte 0xa2600001 _080E05A4: movs r1, 0xE @@ -1102,7 +1102,7 @@ sub_80E079C: @ 80E079C movs r4, 0 cmp r0, 0 ble _080E07FC - ldr r0, _080E0888 @ =gUnknown_03004DE0 + ldr r0, _080E0888 @ =gScanlineEffectRegBuffers mov r12, r0 ldr r7, _080E088C @ =gScanlineEffect _080E07D0: @@ -1136,7 +1136,7 @@ _080E07FC: ldrsh r0, [r6, r2] cmp r1, r0 bgt _080E0846 - ldr r0, _080E0888 @ =gUnknown_03004DE0 + ldr r0, _080E0888 @ =gScanlineEffectRegBuffers mov r12, r0 ldr r7, _080E088C @ =gScanlineEffect _080E0810: @@ -1179,7 +1179,7 @@ _080E0846: ldrsh r0, [r6, r3] cmp r1, r0 bge _080E08BE - ldr r7, _080E0888 @ =gUnknown_03004DE0 + ldr r7, _080E0888 @ =gScanlineEffectRegBuffers ldr r4, _080E088C @ =gScanlineEffect _080E085E: asrs r3, r2, 16 @@ -1204,7 +1204,7 @@ _080E0876: blt _080E085E b _080E08BE .align 2, 0 -_080E0888: .4byte gUnknown_03004DE0 +_080E0888: .4byte gScanlineEffectRegBuffers _080E088C: .4byte gScanlineEffect _080E0890: movs r1, 0x1C @@ -1212,7 +1212,7 @@ _080E0890: adds r5, r0, 0 adds r5, 0x9F movs r4, 0 - ldr r3, _080E08C8 @ =gUnknown_03004DE0 + ldr r3, _080E08C8 @ =gScanlineEffectRegBuffers movs r2, 0xF0 lsls r2, 3 adds r6, r3, r2 @@ -1238,7 +1238,7 @@ _080E08BE: pop {r0} bx r0 .align 2, 0 -_080E08C8: .4byte gUnknown_03004DE0 +_080E08C8: .4byte gScanlineEffectRegBuffers thumb_func_end sub_80E079C thumb_func_start sub_80E08CC diff --git a/asm/dragon.s b/asm/dragon.s index c9a2d490a..59fdc4b68 100755 --- a/asm/dragon.s +++ b/asm/dragon.s @@ -510,7 +510,7 @@ _080DF996: ldrsh r0, [r4, r1] cmp r3, r0 bgt _080DF9C4 - ldr r5, _080DF9EC @ =gUnknown_03004DE0 + ldr r5, _080DF9EC @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -533,7 +533,7 @@ _080DF9C4: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams ldr r0, _080DF9F0 @ =sub_80DF9F4 str r0, [r4] add sp, 0xC @@ -545,7 +545,7 @@ _080DF9DC: .4byte REG_BG2HOFS _080DF9E0: .4byte gBattle_BG2_X _080DF9E4: .4byte 0xa2600001 _080DF9E8: .4byte gAnimBankAttacker -_080DF9EC: .4byte gUnknown_03004DE0 +_080DF9EC: .4byte gScanlineEffectRegBuffers _080DF9F0: .4byte sub_80DF9F4 thumb_func_end sub_80DF924 @@ -659,7 +659,7 @@ sub_80DFAB0: @ 80DFAB0 ldrsh r0, [r5, r1] cmp r4, r0 bgt _080DFB06 - ldr r7, _080DFB1C @ =gUnknown_03004DE0 + ldr r7, _080DFB1C @ =gScanlineEffectRegBuffers mov r12, r7 ldr r0, _080DFB20 @ =gSineTable mov r8, r0 @@ -705,7 +705,7 @@ _080DFB06: pop {r0} bx r0 .align 2, 0 -_080DFB1C: .4byte gUnknown_03004DE0 +_080DFB1C: .4byte gScanlineEffectRegBuffers _080DFB20: .4byte gSineTable _080DFB24: .4byte gScanlineEffect thumb_func_end sub_80DFAB0 diff --git a/asm/ground.s b/asm/ground.s index 00abfd4f3..0ba721042 100755 --- a/asm/ground.s +++ b/asm/ground.s @@ -980,7 +980,7 @@ _080E169C: asrs r4, r0, 16 cmp r2, r0 bge _080E16C8 - ldr r5, _080E1720 @ =gUnknown_03004DE0 + ldr r5, _080E1720 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -1003,7 +1003,7 @@ _080E16C8: asrs r0, r1, 16 cmp r0, 0x9F bgt _080E16F6 - ldr r4, _080E1720 @ =gUnknown_03004DE0 + ldr r4, _080E1720 @ =gScanlineEffectRegBuffers lsls r0, r3, 16 asrs r0, 16 adds r3, r0, 0 @@ -1035,7 +1035,7 @@ _080E16F6: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams add sp, 0xC pop {r4-r6} pop {r0} @@ -1043,7 +1043,7 @@ _080E16F6: .align 2, 0 _080E1718: .4byte gBattle_BG2_X _080E171C: .4byte REG_BG2HOFS -_080E1720: .4byte gUnknown_03004DE0 +_080E1720: .4byte gScanlineEffectRegBuffers _080E1724: .4byte 0xa2600001 thumb_func_end sub_80E1668 diff --git a/asm/pokenav.s b/asm/pokenav.s index 3e410872e..e1b30bdf7 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -10957,7 +10957,7 @@ _080F5B68: .4byte gUnknown_083DFEC4 _080F5B6C: .4byte 0x00009345 _080F5B70: bl dp12_8087EA4 - ldr r0, _080F5BA8 @ =gUnknown_03004DE0 + ldr r0, _080F5BA8 @ =gScanlineEffectRegBuffers movs r2, 0xEF movs r3, 0xF4 lsls r3, 3 @@ -10984,7 +10984,7 @@ _080F5B82: movs r0, 0x1 b _080F5BCE .align 2, 0 -_080F5BA8: .4byte gUnknown_03004DE0 +_080F5BA8: .4byte gScanlineEffectRegBuffers _080F5BAC: .4byte gUnknown_083DFEC4 _080F5BB0: .4byte 0x00009345 _080F5BB4: @@ -10995,7 +10995,7 @@ _080F5BB4: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] @@ -11016,7 +11016,7 @@ sub_80F5BDC: @ 80F5BDC ldr r1, _080F5BEC @ =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] - bl ScanlineEffect_TransferDma + bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 .align 2, 0 @@ -11045,7 +11045,7 @@ sub_80F5BF0: @ 80F5BF0 adds r0, r4, 0 bl sub_80F5A1C movs r6, 0 - ldr r1, _080F5CC4 @ =gUnknown_03004DE0 + ldr r1, _080F5CC4 @ =gScanlineEffectRegBuffers mov r12, r1 movs r0, 0xF0 lsls r0, 3 @@ -11128,7 +11128,7 @@ _080F5CA6: _080F5CB8: .4byte gUnknown_083DFEC4 _080F5CBC: .4byte 0x00009344 _080F5CC0: .4byte 0x0000911c -_080F5CC4: .4byte gUnknown_03004DE0 +_080F5CC4: .4byte gScanlineEffectRegBuffers _080F5CC8: .4byte 0x0000ffff _080F5CCC: .4byte 0x00009130 _080F5CD0: .4byte 0x00009132 @@ -11164,7 +11164,7 @@ sub_80F5CDC: @ 80F5CDC lsls r0, 17 lsrs r5, r0, 16 movs r7, 0 - ldr r1, _080F5DBC @ =gUnknown_03004DE0 + ldr r1, _080F5DBC @ =gScanlineEffectRegBuffers mov r12, r1 movs r4, 0xF0 lsls r4, 3 @@ -11248,7 +11248,7 @@ _080F5DA0: _080F5DB0: .4byte gUnknown_083DFEC4 _080F5DB4: .4byte 0x00009344 _080F5DB8: .4byte 0x0000911c -_080F5DBC: .4byte gUnknown_03004DE0 +_080F5DBC: .4byte gScanlineEffectRegBuffers _080F5DC0: .4byte 0x0000ffff _080F5DC4: .4byte 0x00009130 _080F5DC8: .4byte 0x00009132 diff --git a/asm/psychic.s b/asm/psychic.s index bdc230dcb..7dbedd08f 100755 --- a/asm/psychic.s +++ b/asm/psychic.s @@ -1588,7 +1588,7 @@ _080DC380: adds r0, 0x40 cmp r1, r0 bgt _080DC3BA - ldr r5, _080DC3E8 @ =gUnknown_03004DE0 + ldr r5, _080DC3E8 @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -1621,7 +1621,7 @@ _080DC3BA: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams ldr r0, _080DC3F0 @ =sub_80DC3F4 str r0, [r4] add sp, 0xC @@ -1631,7 +1631,7 @@ _080DC3BA: .align 2, 0 _080DC3E0: .4byte gBattle_BG2_X _080DC3E4: .4byte REG_BG2HOFS -_080DC3E8: .4byte gUnknown_03004DE0 +_080DC3E8: .4byte gScanlineEffectRegBuffers _080DC3EC: .4byte 0xa2600001 _080DC3F0: .4byte sub_80DC3F4 thumb_func_end sub_80DC2D4 @@ -1676,7 +1676,7 @@ _080DC426: ldr r0, _080DC470 @ =gSineTable mov r9, r0 movs r7, 0x3 - ldr r1, _080DC474 @ =gUnknown_03004DE0 + ldr r1, _080DC474 @ =gScanlineEffectRegBuffers mov r12, r1 movs r2, 0xF0 lsls r2, 3 @@ -1704,7 +1704,7 @@ _080DC448: b _080DC484 .align 2, 0 _080DC470: .4byte gSineTable -_080DC474: .4byte gUnknown_03004DE0 +_080DC474: .4byte gScanlineEffectRegBuffers _080DC478: cmp r3, 0 bge _080DC488 diff --git a/asm/water.s b/asm/water.s index 4336374aa..56e552241 100755 --- a/asm/water.s +++ b/asm/water.s @@ -300,7 +300,7 @@ _080D3D9C: movs r3, 0 movs r2, 0x10 ldrsh r0, [r4, r2] - ldr r1, _080D3E6C @ =gUnknown_03004DE0 + ldr r1, _080D3E6C @ =gScanlineEffectRegBuffers mov r12, r1 cmp r3, r0 bge _080D3DDA @@ -337,7 +337,7 @@ _080D3DDA: ldrsh r0, [r4, r3] cmp r1, r0 bge _080D3E14 - ldr r5, _080D3E6C @ =gUnknown_03004DE0 + ldr r5, _080D3E6C @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -366,7 +366,7 @@ _080D3E14: asrs r0, r2, 16 cmp r0, 0x9F bgt _080D3E4A - ldr r5, _080D3E6C @ =gUnknown_03004DE0 + ldr r5, _080D3E6C @ =gScanlineEffectRegBuffers movs r0, 0xF0 lsls r0, 3 adds r6, r5, r0 @@ -407,7 +407,7 @@ _080D3E4A: ldrh r0, [r4, 0xA] b _080D3E8A .align 2, 0 -_080D3E6C: .4byte gUnknown_03004DE0 +_080D3E6C: .4byte gScanlineEffectRegBuffers _080D3E70: .4byte 0x0000ffff _080D3E74: lsls r0, r3, 16 @@ -436,7 +436,7 @@ _080D3E8A: ldr r0, [sp] ldr r1, [sp, 0x4] ldr r2, [sp, 0x8] - bl sub_80895F8 + bl ScanlineEffect_SetParams ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -475,7 +475,7 @@ _080D3EE8: ldrsh r0, [r4, r1] cmp r3, r0 bge _080D3F1C - ldr r6, _080D3F80 @ =gUnknown_03004DE0 + ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers ldr r5, _080D3F84 @ =gScanlineEffect _080D3EF6: lsls r1, r3, 16 @@ -505,7 +505,7 @@ _080D3F1C: ldrsh r0, [r4, r3] cmp r1, r0 bge _080D3F50 - ldr r6, _080D3F80 @ =gUnknown_03004DE0 + ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers ldr r5, _080D3F84 @ =gScanlineEffect _080D3F2E: asrs r3, r2, 16 @@ -531,7 +531,7 @@ _080D3F50: asrs r0, r1, 16 cmp r0, 0x9F bgt _080D4032 - ldr r6, _080D3F80 @ =gUnknown_03004DE0 + ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers ldr r5, _080D3F84 @ =gScanlineEffect _080D3F5E: asrs r3, r1, 16 @@ -551,7 +551,7 @@ _080D3F5E: ble _080D3F5E b _080D4032 .align 2, 0 -_080D3F80: .4byte gUnknown_03004DE0 +_080D3F80: .4byte gScanlineEffectRegBuffers _080D3F84: .4byte gScanlineEffect _080D3F88: movs r3, 0 @@ -559,7 +559,7 @@ _080D3F88: ldrsh r0, [r4, r1] cmp r3, r0 bge _080D3FBC - ldr r6, _080D403C @ =gUnknown_03004DE0 + ldr r6, _080D403C @ =gScanlineEffectRegBuffers ldr r5, _080D4040 @ =gScanlineEffect _080D3F96: lsls r1, r3, 16 @@ -589,7 +589,7 @@ _080D3FBC: ldrsh r0, [r4, r3] cmp r1, r0 bge _080D3FF0 - ldr r6, _080D403C @ =gUnknown_03004DE0 + ldr r6, _080D403C @ =gScanlineEffectRegBuffers ldr r5, _080D4040 @ =gScanlineEffect _080D3FCE: asrs r3, r2, 16 @@ -615,7 +615,7 @@ _080D3FF0: asrs r0, r1, 16 cmp r0, 0x9F bgt _080D401C - ldr r6, _080D403C @ =gUnknown_03004DE0 + ldr r6, _080D403C @ =gScanlineEffectRegBuffers ldr r5, _080D4040 @ =gScanlineEffect _080D3FFE: asrs r3, r1, 16 @@ -649,7 +649,7 @@ _080D4032: pop {r0} bx r0 .align 2, 0 -_080D403C: .4byte gUnknown_03004DE0 +_080D403C: .4byte gScanlineEffectRegBuffers _080D4040: .4byte gScanlineEffect thumb_func_end sub_80D3D68 diff --git a/common_syms/scanline_effect.txt b/common_syms/scanline_effect.txt new file mode 100644 index 000000000..280e7f891 --- /dev/null +++ b/common_syms/scanline_effect.txt @@ -0,0 +1,2 @@ +gScanlineEffect +gScanlineEffectRegBuffers diff --git a/include/data2.h b/include/data2.h index 97cb4fd7a..9f6644714 100644 --- a/include/data2.h +++ b/include/data2.h @@ -3,7 +3,7 @@ #include "sprite.h" -struct UnknownTaskStruct; +struct ScanlineEffectParams; struct MonCoords { @@ -42,7 +42,7 @@ extern u8 gSpeciesNames[][11]; extern const u8 gMoveNames[][13]; extern const u8 gAbilityNames[][13]; extern const u8 gTypeNames[][7]; -extern const struct UnknownTaskStruct gUnknown_081F9674; +extern const struct ScanlineEffectParams gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; extern struct CompressedSpriteSheet gUnknown_081FAEA4; extern struct CompressedSpritePalette gUnknown_081FAEAC; diff --git a/include/scanline_effect.h b/include/scanline_effect.h index b28973eb3..242b35448 100644 --- a/include/scanline_effect.h +++ b/include/scanline_effect.h @@ -1,10 +1,13 @@ #ifndef GUARD_SCANLINE_EFFECT_H #define GUARD_SCANLINE_EFFECT_H -struct UnknownTaskStruct +// DMA control value to ransfer a single 16-bit value at HBlank +#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1) + +struct ScanlineEffectParams { - volatile void *dest; - u32 control; + volatile void *dmaDest; + u32 dmaControl; u8 unk8; u8 unk9; }; @@ -12,9 +15,9 @@ struct UnknownTaskStruct struct ScanlineEffect { void *src[2]; - volatile void *dest; - u32 unkC; - void (*unk10)(void); + volatile void *dmaDest; + u32 dmaControl; + void (*setFirstScanlineReg)(void); u8 srcBank; u8 unk15; u8 unk16; @@ -25,17 +28,17 @@ struct ScanlineEffect extern struct ScanlineEffect gScanlineEffect; -extern u16 gUnknown_03004DE0[][0x3C0]; +extern u16 gScanlineEffectRegBuffers[][0x3C0]; void ScanlineEffect_Stop(void); void ScanlineEffect_Stop(void); void dp12_8087EA4(void); void dp12_8087EA4(void); -//void sub_80895F8(u32 i, u32 i1, u32 i2); -//void sub_80895F8(); -void sub_80895F8(struct UnknownTaskStruct unk); -void ScanlineEffect_TransferDma(void); -void ScanlineEffect_TransferDma(); +//void ScanlineEffect_SetParams(u32 i, u32 i1, u32 i2); +//void ScanlineEffect_SetParams(); +void ScanlineEffect_SetParams(struct ScanlineEffectParams unk); +void ScanlineEffect_InitHBlankDmaTransfer(void); +void ScanlineEffect_InitHBlankDmaTransfer(); //void ScanlineEffect_InitWave(int i, int i1, int i2, int i3, int i4, int i5, int i6); u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index ac1ae08cb..fc74e3f46 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -21,7 +21,8 @@ static void sub_80D0E8C(struct Sprite* sprite); void sub_80D0C88(u8 taskId) { struct Task* task = &gTasks[taskId]; - struct UnknownTaskStruct sp; + struct ScanlineEffectParams params; + s16 i; task->data[0] = sub_8077FC0(gAnimBankTarget) + 32; task->data[1] = 4; @@ -30,30 +31,31 @@ void sub_80D0C88(u8 taskId) task->data[4] = 0; task->data[5] = 0; task->data[15] = sub_807A100(gAnimBankTarget, 0); + if (GetBankIdentity_permutated(gAnimBankTarget) == 1) { task->data[6] = gBattle_BG1_X; - sp.dest = (u16 *)REG_ADDR_BG1HOFS; + params.dmaDest = (u16 *)REG_ADDR_BG1HOFS; } else { task->data[6] = gBattle_BG2_X; - sp.dest = (u16 *)REG_ADDR_BG2HOFS; + params.dmaDest = (u16 *)REG_ADDR_BG2HOFS; } for (i = task->data[0] - 0x40; i <= task->data[0];i++) { if (i >= 0) { - gUnknown_03004DE0[0][i] = task->data[6] + 0xF0; - gUnknown_03004DE0[1][i] = task->data[6] + 0xF0; + gScanlineEffectRegBuffers[0][i] = task->data[6] + 0xF0; + gScanlineEffectRegBuffers[1][i] = task->data[6] + 0xF0; } } - sp.control = 0xa2600001; - sp.unk8 = 1; - sp.unk9 = 0; - sub_80895F8(sp); + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.unk8 = 1; + params.unk9 = 0; + ScanlineEffect_SetParams(params); task->func = sub_80D0D68; } @@ -91,8 +93,8 @@ void sub_80D0D68(u8 taskId) if (task->data[5] >= 0) { - gUnknown_03004DE0[0][task->data[5]] = task->data[6]; - gUnknown_03004DE0[1][task->data[5]] = task->data[6]; + gScanlineEffectRegBuffers[0][task->data[5]] = task->data[6]; + gScanlineEffectRegBuffers[1][task->data[5]] = task->data[6]; } if (++task->data[3] >= task->data[15]) @@ -178,7 +180,7 @@ _080D0DE0:\n\ ldrsh r0, [r3, r1]\n\ cmp r0, 0\n\ blt _080D0E04\n\ - ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\ + ldr r2, _080D0E28 @ =gScanlineEffectRegBuffers\n\ lsls r0, 1\n\ adds r0, r2\n\ ldrh r1, [r3, 0x14]\n\ @@ -212,7 +214,7 @@ _080D0E22:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_080D0E28: .4byte gUnknown_03004DE0\n\ +_080D0E28: .4byte gScanlineEffectRegBuffers\n\ _080D0E2C: .4byte gScanlineEffect\n\ .syntax divided\n"); } diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index da6c9a2b4..f4fff742c 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -223,17 +223,17 @@ void InitBattle(void) for (i = 0; i < 80; i++) { - gUnknown_03004DE0[0][i] = 0xF0; - gUnknown_03004DE0[1][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; } for (i = 80; i < 160; i++) { asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter - gUnknown_03004DE0[0][i] = 0xFF10; - gUnknown_03004DE0[1][i] = 0xFF10; + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; } - //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); - sub_80895F8(gUnknown_081F9674); + //ScanlineEffect_SetParams(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); + ScanlineEffect_SetParams(gUnknown_081F9674); Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; @@ -1073,7 +1073,7 @@ void sub_800FCFC(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void nullsub_36(struct Sprite *sprite) @@ -1201,14 +1201,14 @@ void c2_8011A1C(void) for (i = 0; i < 80; i++) { - gUnknown_03004DE0[0][i] = 0xF0; - gUnknown_03004DE0[1][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; } for (i = 80; i < 160; i++) { asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter - gUnknown_03004DE0[0][i] = 0xFF10; - gUnknown_03004DE0[1][i] = 0xFF10; + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; } Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 48ef86fa2..843203a1e 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -18,8 +18,6 @@ void sub_807DE10(void); void dp12_8087EA4(void); -extern u16 gUnknown_03005560[]; - extern const struct OamData gFieldOamData_32x32; struct TransitionData @@ -674,7 +672,7 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) sub_811D658(); dp12_8087EA4(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); - sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); + sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160); SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl); SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl); @@ -695,7 +693,7 @@ static bool8 Phase2_Transition_Swirl_Func2(struct Task* task) task->data[1] += 4; task->data[2] += 8; - sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); if (!gPaletteFade.active) { @@ -711,12 +709,12 @@ static void VBlankCB_Phase2_Transition_Swirl(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Swirl(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1HOFS = var; REG_BG2HOFS = var; REG_BG3HOFS = var; @@ -735,7 +733,7 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) dp12_8087EA4(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); - memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); + memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140); SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle); SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle); @@ -764,7 +762,7 @@ static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task) for (i = 0; i < 160; i++, r4 += 4224) { u16 var = r4 / 256; - gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); } if (!gPaletteFade.active) @@ -778,12 +776,12 @@ static void VBlankCB_Phase2_Transition_Shuffle(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Shuffle(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1VOFS = var; REG_BG2VOFS = var; REG_BG3VOFS = var; @@ -815,7 +813,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = 240; + gScanlineEffectRegBuffers[1][i] = 240; } SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball); @@ -844,7 +842,7 @@ static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task) dst1[i * 32 + j] = *BigPokeballMap | 0xF000; } } - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5], 160); task->tState++; return TRUE; @@ -864,7 +862,7 @@ static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; @@ -884,7 +882,7 @@ static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; @@ -896,7 +894,7 @@ static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); if (task->data[5] <= 0) { @@ -921,7 +919,7 @@ static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task) if (task->data[1] < 0) task->data[1] = 0; } - sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]); + sub_811D764(gScanlineEffectRegBuffers[0], 120, 80, task->data[1]); if (task->data[1] == 0) { DmaStop(0); @@ -943,7 +941,7 @@ static void Transition_BigPokeball_Vblank(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; @@ -954,13 +952,13 @@ static void Transition_BigPokeball_Vblank(void) static void VBlankCB0_Phase2_Transition_BigPokeball(void) { Transition_BigPokeball_Vblank(); - DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BG0HOFS, 0xA2400001); } static void VBlankCB1_Phase2_Transition_BigPokeball(void) { Transition_BigPokeball_Vblank(); - DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_Transition_PokeballsTrail(u8 taskID) @@ -1087,7 +1085,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = 0xF3F4; + gScanlineEffectRegBuffers[1][i] = 0xF3F4; } SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade); @@ -1104,7 +1102,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task) sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); TRANSITION_STRUCT.data[4] += 16; @@ -1132,7 +1130,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1; if (TRANSITION_STRUCT.data[5] >= 80) r1 = TRANSITION_STRUCT.data[2], r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); if (var != 0) break; var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); @@ -1148,7 +1146,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) { while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + gScanlineEffectRegBuffers[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); } } @@ -1163,7 +1161,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task) sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); TRANSITION_STRUCT.data[4] -= 16; @@ -1188,10 +1186,10 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) while (1) { - r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; + r1 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; if (TRANSITION_STRUCT.data[5] <= 80) r2 = 120, r1 = TRANSITION_STRUCT.data[2]; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); r3 = 0; if (var != 0) break; @@ -1208,7 +1206,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) { while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + gScanlineEffectRegBuffers[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); } } @@ -1228,7 +1226,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task) r2 = 120, r3 = TRANSITION_STRUCT.data[2]; if (TRANSITION_STRUCT.data[2] >= 120) r2 = 0, r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); @@ -1253,12 +1251,12 @@ static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - REG_WIN0H = gUnknown_03004DE0[1][0]; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + REG_WIN0H = gScanlineEffectRegBuffers[1][0]; + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_Transition_Ripple(u8 taskID) @@ -1275,7 +1273,7 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; + gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_16; } SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); @@ -1308,7 +1306,7 @@ static bool8 Phase2_Transition_Ripple_Func2(struct Task* task) // todo: fix the asm s16 var = r4 >> 8; asm(""); - gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); asm(""); } @@ -1329,12 +1327,12 @@ static void VBlankCB_Phase2_Transition_Ripple(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Ripple(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1VOFS = var; REG_BG2VOFS = var; REG_BG3VOFS = var; @@ -1359,7 +1357,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 242; + gScanlineEffectRegBuffers[1][i] = 242; } SetVBlankCallback(VBlankCB_Phase2_Transition_Wave); @@ -1375,7 +1373,7 @@ static bool8 Phase2_Transition_Wave_Func2(struct Task* task) bool8 nextFunc; TRANSITION_STRUCT.VBlank_DMA = 0; - toStore = gUnknown_03004DE0[0]; + toStore = gScanlineEffectRegBuffers[0]; r5 = task->data[2]; task->data[2] += 16; task->data[1] += 8; @@ -1411,11 +1409,11 @@ static void VBlankCB_Phase2_Transition_Wave(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } #define tMugshotOpponentID data[13] @@ -1474,7 +1472,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 0xF0F1; + gScanlineEffectRegBuffers[1][i] = 0xF0F1; } SetVBlankCallback(VBlankCB0_Phase2_Mugshots); @@ -1519,7 +1517,7 @@ static bool8 Phase2_Mugshot_Func3(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - toStore = gUnknown_03004DE0[0]; + toStore = gScanlineEffectRegBuffers[0]; r5 = task->data[1]; task->data[1] += 0x10; @@ -1565,7 +1563,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) + for (i = 0, toStore = gScanlineEffectRegBuffers[0]; i < 160; i++, toStore++) { *toStore = 0xF0; } @@ -1608,8 +1606,8 @@ static bool8 Phase2_Mugshot_Func6(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; SetVBlankCallback(NULL); DmaStop(0); - memset(gUnknown_03004DE0[0], 0, 0x140); - memset(gUnknown_03004DE0[1], 0, 0x140); + memset(gScanlineEffectRegBuffers[0], 0, 0x140); + memset(gScanlineEffectRegBuffers[1], 0, 0x140); REG_WIN0H = 0xF0; REG_BLDY = 0; task->tState++; @@ -1642,15 +1640,15 @@ static bool8 Phase2_Mugshot_Func7(struct Task* task) { s16 index1 = 0x50 - i; s16 index2 = 0x50 + i; - if (gUnknown_03004DE0[0][index1] <= 15) + if (gScanlineEffectRegBuffers[0][index1] <= 15) { r6 = TRUE; - gUnknown_03004DE0[0][index1]++; + gScanlineEffectRegBuffers[0][index1]++; } - if (gUnknown_03004DE0[0][index2] <= 15) + if (gScanlineEffectRegBuffers[0][index2] <= 15) { r6 = TRUE; - gUnknown_03004DE0[0][index2]++; + gScanlineEffectRegBuffers[0][index2]++; } } } @@ -1678,7 +1676,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; task->data[3]++; - memset(gUnknown_03004DE0[0], task->data[3], 0x140); + memset(gScanlineEffectRegBuffers[0], task->data[3], 0x140); if (task->data[3] > 15) task->tState++; @@ -1699,12 +1697,12 @@ static void VBlankCB0_Phase2_Mugshots(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_BG0VOFS = TRANSITION_STRUCT.field_1C; REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void VBlankCB1_Phase2_Mugshots(void) @@ -1712,9 +1710,9 @@ static void VBlankCB1_Phase2_Mugshots(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; - DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BLDY, 0xA2400001); } static void HBlankCB_Phase2_Mugshots(void) @@ -1856,8 +1854,8 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14; - gUnknown_03004DE0[1][160 + i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_14; + gScanlineEffectRegBuffers[1][160 + i] = 0xF0; } REG_IE |= INTR_FLAG_HBLANK; @@ -1886,8 +1884,8 @@ static bool8 Phase2_Transition_Slice_Func2(struct Task* task) for (i = 0; i < 160; i++) { - u16* storeLoc1 = &gUnknown_03004DE0[0][i]; - u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + u16* storeLoc1 = &gScanlineEffectRegBuffers[0][i]; + u16* storeLoc2 = &gScanlineEffectRegBuffers[0][i + 160]; if (1 & i) { *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; @@ -1923,13 +1921,13 @@ static void VBlankCB_Phase2_Transition_Slice(void) REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); - DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, 0xA2400001); } static void HBlankCB_Phase2_Transition_Slice(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1HOFS = var; REG_BG2HOFS = var; REG_BG3HOFS = var; @@ -1955,8 +1953,8 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 0; - gUnknown_03004DE0[1][i + 160] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0; + gScanlineEffectRegBuffers[1][i + 160] = 0xF0; } REG_IE |= INTR_FLAG_HBLANK; @@ -2038,8 +2036,8 @@ static void VBlankCB0_Phase2_Transition_WhiteFade(void) REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.field_6; if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); - DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, 0xA2400001); } static void VBlankCB1_Phase2_Transition_WhiteFade(void) @@ -2055,7 +2053,7 @@ static void VBlankCB1_Phase2_Transition_WhiteFade(void) static void HBlankCB_Phase2_Transition_WhiteFade(void) { - REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BLDY = gScanlineEffectRegBuffers[1][REG_VCOUNT]; } static void sub_811CFD0(struct Sprite* sprite) @@ -2069,8 +2067,8 @@ static void sub_811CFD0(struct Sprite* sprite) else { u16 i; - u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; - u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y]; + u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160]; for (i = 0; i < 20; i++) { ptr1[i] = sprite->data[0] >> 8; @@ -2168,10 +2166,10 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[0][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; } - CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 0xA0); SetVBlankCallback(VBlankCB_Phase2_Transition_Shards); task->tState++; @@ -2200,8 +2198,8 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task) for (i = 0, nextFunc = FALSE; i < 16; i++) { - s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8; - s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF; + s16 r3 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] >> 8; + s16 r4 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF; if (task->data[2] == 0) { if (r3 < TRANSITION_STRUCT.data[2]) @@ -2216,7 +2214,7 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task) if (r4 <= r3) r4 = r3; } - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); if (nextFunc) { task->tState++; @@ -2263,12 +2261,12 @@ static void VBlankCB_Phase2_Transition_Shards(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - REG_WIN0H = gUnknown_03004DE0[1][0]; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + REG_WIN0H = gScanlineEffectRegBuffers[1][0]; + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) diff --git a/src/contest.c b/src/contest.c index e39ce3daa..e41838cb1 100644 --- a/src/contest.c +++ b/src/contest.c @@ -635,7 +635,7 @@ void ContestVBlankCallback(void) TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80ABB70(u8 taskId) diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 85a8800e7..7c250b584 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -516,7 +516,7 @@ static void sub_80AA090(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void sub_80AA10C(void) diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 7ca647b93..3bed951d6 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -43,7 +43,7 @@ const u16 gBerryMasterWifePhrases[][2] = // const pointer to gEasyChatStruct-> easy_chat might be two separate files. struct Shared1000 *const gEasyChatStruct = (struct Shared1000 *)(gSharedMem + 0x1000); -const struct UnknownTaskStruct gUnknown_083DB698 = +const struct ScanlineEffectParams gUnknown_083DB698 = { ®_BG3VOFS, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -300,7 +300,7 @@ void sub_80E62F8(void) dp12_8087EA4(); ScanlineEffect_Stop(); sub_80EAD08(); - sub_80895F8(gUnknown_083DB698); + ScanlineEffect_SetParams(gUnknown_083DB698); FreeSpriteTileRanges(); FreeAllSpritePalettes(); break; @@ -655,7 +655,7 @@ void sub_80E6A6C(void) ProcessSpriteCopyRequests(); sub_80EAC5C(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80E6A88(void) diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 0f12b978d..e7b65bef0 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gUnknown_03004DE0[gScanlineEffect.srcBank]; + r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index f1b115610..be22b24c4 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -256,7 +256,7 @@ static void sub_8093254(void) ewram0_2.var_5 ^= 1; } if (ewram0_2.var_4) - DmaCopy16(3, &gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 0x140); + DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140); } static void sub_80932AC(Callback callBack) @@ -732,7 +732,7 @@ bool8 sub_8093AA0(struct Task *task) ewram0_2.var_4 = FALSE; dp12_8087EA4(); for (i = 0; i < 0xA0; i++) - gUnknown_03004DE0[1][i] = -4; + gScanlineEffectRegBuffers[1][i] = -4; SetHBlankCallback(sub_8093D7C); ewram0_2.var_4 = TRUE; task->data[0]++; @@ -768,7 +768,7 @@ bool8 sub_8093AF0(struct Task *task) for (i = 0; i < r7; i++) { - gUnknown_03004DE0.filler0[i] = -4 - (u32)i; + gScanlineEffectRegBuffers.filler0[i] = -4 - (u32)i; } //_08093B74 for (; i < r9; i++) @@ -776,10 +776,10 @@ bool8 sub_8093AF0(struct Task *task) u16 var = r6 >> 16; r6 += r5; r5 -= sp0; - gUnknown_03004DE0.filler0[i] = -4 + var; + gScanlineEffectRegBuffers.filler0[i] = -4 + var; } for (; i < 160; i++) - gUnknown_03004DE0.filler0[i] = -4 + (u16)(r10 >> 16); + gScanlineEffectRegBuffers.filler0[i] = -4 + (u16)(r10 >> 16); ewram0_2.var_4 = 1; if (task->data[1] > 0x4A) task->data[0]++; @@ -840,7 +840,7 @@ _08093B18:\n\ movs r3, 0\n\ cmp r3, r7\n\ bcs _08093B74\n\ - ldr r2, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r2, _08093C04 @ =gScanlineEffectRegBuffers\n\ mov r12, r2\n\ ldr r0, _08093C08 @ =0x0000fffc\n\ adds r4, r0, 0\n\ @@ -866,7 +866,7 @@ _08093B74:\n\ lsrs r7, r4, 16\n\ cmp r2, r0\n\ bge _08093BAE\n\ - ldr r0, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r0, _08093C04 @ =gScanlineEffectRegBuffers\n\ mov r9, r0\n\ ldr r4, _08093C08 @ =0x0000fffc\n\ mov r12, r4\n\ @@ -894,7 +894,7 @@ _08093BAE:\n\ asrs r0, 16\n\ cmp r0, 0x9F\n\ bgt _08093BD4\n\ - ldr r4, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r4, _08093C04 @ =gScanlineEffectRegBuffers\n\ ldr r0, _08093C08 @ =0x0000fffc\n\ adds r2, r1, r0\n\ _08093BBE:\n\ @@ -934,7 +934,7 @@ _08093BEA:\n\ .align 2, 0\n\ _08093BFC: .4byte gSharedMem\n\ _08093C00: .4byte 0xffff0000\n\ -_08093C04: .4byte gUnknown_03004DE0\n\ +_08093C04: .4byte gScanlineEffectRegBuffers\n\ _08093C08: .4byte 0x0000fffc\n\ .syntax divided\n"); } @@ -1000,7 +1000,7 @@ _08093C5C:\n\ movs r3, 0\n\ cmp r3, r7\n\ bcs _08093CB8\n\ - ldr r2, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r2, _08093D48 @ =gScanlineEffectRegBuffers\n\ mov r12, r2\n\ ldr r0, _08093D4C @ =0x0000fffc\n\ adds r4, r0, 0\n\ @@ -1026,7 +1026,7 @@ _08093CB8:\n\ lsrs r7, r4, 16\n\ cmp r2, r0\n\ bge _08093CF2\n\ - ldr r0, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r0, _08093D48 @ =gScanlineEffectRegBuffers\n\ mov r9, r0\n\ ldr r3, _08093D4C @ =0x0000fffc\n\ mov r12, r3\n\ @@ -1054,7 +1054,7 @@ _08093CF2:\n\ asrs r0, 16\n\ cmp r0, 0x9F\n\ bgt _08093D18\n\ - ldr r4, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r4, _08093D48 @ =gScanlineEffectRegBuffers\n\ ldr r0, _08093D4C @ =0x0000fffc\n\ adds r2, r1, r0\n\ _08093D02:\n\ @@ -1094,7 +1094,7 @@ _08093D2E:\n\ .align 2, 0\n\ _08093D40: .4byte gSharedMem\n\ _08093D44: .4byte 0xffff0000\n\ -_08093D48: .4byte gUnknown_03004DE0\n\ +_08093D48: .4byte gScanlineEffectRegBuffers\n\ _08093D4C: .4byte 0x0000fffc\n\ .syntax divided\n"); } @@ -1113,7 +1113,7 @@ bool8 sub_8093D50(struct Task *task) void sub_8093D7C(void) { - u16 bgVOffset = gUnknown_03004DE0[1][REG_VCOUNT & 0xFF]; + u16 bgVOffset = gScanlineEffectRegBuffers[1][REG_VCOUNT & 0xFF]; REG_BG0VOFS = bgVOffset; REG_BG1VOFS = bgVOffset; diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index b5141e7ea..bc70e1a63 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -13,7 +13,7 @@ const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; const s32 gMaxFlashLevel = 4; -const static struct UnknownTaskStruct gUnknown_0839ACEC = +const static struct ScanlineEffectParams gUnknown_0839ACEC = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -64,11 +64,11 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) @@ -140,8 +140,8 @@ void sub_80815E0(u8 a1) { if (a1) { - sub_8081398(&gUnknown_03004DE0[0][0], 120, 80, gUnknown_0839ACDC[a1]); - CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); + sub_8081398(&gScanlineEffectRegBuffers[0][0], 120, 80, gUnknown_0839ACDC[a1]); + CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); } } @@ -208,10 +208,10 @@ static void sub_80816A8(u8 taskId) REG_BLDALPHA = 1804; REG_WININ = 63; REG_WINOUT = 30; - sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1); - CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); - //sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); - sub_80895F8(gUnknown_0839ACEC); + sub_8081398(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1); + CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); + //ScanlineEffect_SetParams(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); + ScanlineEffect_SetParams(gUnknown_0839ACEC); data[0] = 1; break; case 1: diff --git a/src/field/overworld.c b/src/field/overworld.c index e90fc6396..2590852af 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -142,7 +142,7 @@ const struct UCoords32 gUnknown_0821664C[] = { 1, -1}, }; -const struct UnknownTaskStruct gUnknown_08216694 = +const struct ScanlineEffectParams gUnknown_08216694 = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -1410,7 +1410,7 @@ void VBlankCB_Field(void) { LoadOam(); ProcessSpriteCopyRequests(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); sub_8057A58(); TransferPlttBuffer(); sub_8072E74(); @@ -1422,7 +1422,7 @@ void sub_8054814(void) if (val) { sub_80815E0(val); - sub_80895F8(gUnknown_08216694); + ScanlineEffect_SetParams(gUnknown_08216694); } } diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 4af7be386..42020c49a 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -117,7 +117,7 @@ static void sub_81365A0(void); static void sub_81365C8(void); static void sub_8136638(void); static void sub_81368A4(void); -void ScanlineEffect_TransferDma(void); +void ScanlineEffect_InitHBlankDmaTransfer(void); static void sub_8136B44(void); static u8 sub_81370E4(u8); static void sub_8136BB8(void); @@ -194,7 +194,7 @@ static void sub_8136264(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5CDC(6); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 7439fc077..b31be2ce1 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -436,7 +436,7 @@ void sub_80EBD4C() ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5BF0(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80EBD68() diff --git a/src/scanline_effect.c b/src/scanline_effect.c index e9cf0d02a..0fa5b024d 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -4,27 +4,26 @@ #include "trig.h" #include "scanline_effect.h" -// Control value to ransfer a single 16-bit value at HBlank -#define HBLANK_DMA_CONTROL_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1) +static void CopyValue16Bit(void); +static void CopyValue32Bit(void); -static void sub_80896F4(void); -static void sub_8089714(void); - -extern u16 gUnknown_030041B0; -extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_Y; extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B8; -extern u8 gUnknown_0202FFA4; +EWRAM_DATA static u8 gUnknown_0202FFA4 = 0; -extern struct ScanlineEffect gScanlineEffect; +struct ScanlineEffect gScanlineEffect; -// Is this a struct? -extern u16 gUnknown_03004DE0[][0x3C0]; +// Per-scanline register values. +// This is double buffered so that it can be safely written to at any time +// without overwriting the buffer that the DMA is currently reading +u16 gScanlineEffectRegBuffers[2][0x3C0]; void ScanlineEffect_Stop(void) { @@ -39,11 +38,11 @@ void ScanlineEffect_Stop(void) void dp12_8087EA4(void) { - CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gScanlineEffect.src[0] = 0; - gScanlineEffect.src[1] = 0; - gScanlineEffect.dest = 0; - gScanlineEffect.unkC = 0; + CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); + gScanlineEffect.src[0] = NULL; + gScanlineEffect.src[1] = NULL; + gScanlineEffect.dmaDest = NULL; + gScanlineEffect.dmaControl = 0; gScanlineEffect.srcBank = 0; gScanlineEffect.unk15 = 0; gScanlineEffect.unk16 = 0; @@ -51,31 +50,35 @@ void dp12_8087EA4(void) gScanlineEffect.taskId = 0xFF; } -void sub_80895F8(struct UnknownTaskStruct unk) +void ScanlineEffect_SetParams(struct ScanlineEffectParams params) { - if (unk.control == HBLANK_DMA_CONTROL_16BIT) // 16 bit + if (params.dmaControl == SCANLINE_EFFECT_DMACNT_16BIT) // 16-bit { - gScanlineEffect.src[0] = &gUnknown_03004DE0[0][1]; - gScanlineEffect.src[1] = &gUnknown_03004DE0[1][1]; - gScanlineEffect.unk10 = sub_80896F4; + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.src[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.src[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue16Bit; } else // assume 32-bit { - gScanlineEffect.src[0] = &gUnknown_03004DE0[0][2]; - gScanlineEffect.src[1] = &gUnknown_03004DE0[1][2]; - gScanlineEffect.unk10 = sub_8089714; + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.src[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.src[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue32Bit; } - gScanlineEffect.unkC = unk.control; - gScanlineEffect.dest = unk.dest; - gScanlineEffect.unk15 = unk.unk8; - gScanlineEffect.unk16 = unk.unk9; - gScanlineEffect.unk17 = unk.unk9; + gScanlineEffect.dmaControl = params.dmaControl; + gScanlineEffect.dmaDest = params.dmaDest; + gScanlineEffect.unk15 = params.unk8; + gScanlineEffect.unk16 = params.unk9; + gScanlineEffect.unk17 = params.unk9; } -void ScanlineEffect_TransferDma(void) +void ScanlineEffect_InitHBlankDmaTransfer(void) { - if (gScanlineEffect.unk15) + if (gScanlineEffect.unk15 != 0) { if (gScanlineEffect.unk15 == 3) { @@ -86,28 +89,44 @@ void ScanlineEffect_TransferDma(void) else { DmaStop(0); - DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dest, gScanlineEffect.unkC); - gScanlineEffect.unk10(); + // Set DMA to copy to dest register on each HBlank for the next frame. + // The HBlank DMA transfers do not occurr during VBlank, so the transfer + // will begin on the HBlank after the first scanline + DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); + // Manually set the reg for the first scanline + gScanlineEffect.setFirstScanlineReg(); + // Swap current buffer gScanlineEffect.srcBank ^= 1; } } } -static void sub_80896F4(void) +// These two functions are used to copy the register for the first scanline, +// depending whether it is a 16-bit register or a 32-bit register. + +static void CopyValue16Bit(void) { - u16 *dest = (u16 *)gScanlineEffect.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; + u16 *dest = (u16 *)gScanlineEffect.dmaDest; + u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + *dest = *src; } -static void sub_8089714(void) +static void CopyValue32Bit(void) { - u32 *dest = (u32 *)gScanlineEffect.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; + u32 *dest = (u32 *)gScanlineEffect.dmaDest; + u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + *dest = *src; } -static void task00_for_dp12(u8 taskId) +#define tStartLine data[0] +#define tEndLine data[1] +#define framesUntilMove data[4] +#define tDelayInterval data[5] +#define tRegOffset data[6] + +static void TaskFunc_UpdateWavePerFrame(u8 taskId) { int value = 0; @@ -120,7 +139,7 @@ static void task00_for_dp12(u8 taskId) { if (gTasks[taskId].data[7]) { - switch (gTasks[taskId].data[6]) + switch (gTasks[taskId].tRegOffset) { case 0x0: value = gBattle_BG0_X; @@ -148,15 +167,16 @@ static void task00_for_dp12(u8 taskId) break; } } - if (gTasks[taskId].data[4]) + if (gTasks[taskId].framesUntilMove != 0) { int i; int offset; - gTasks[taskId].data[4]--; + + gTasks[taskId].framesUntilMove--; offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } } @@ -164,18 +184,17 @@ static void task00_for_dp12(u8 taskId) { int i; int offset; - gTasks[taskId].data[4] = gTasks[taskId].data[5]; + + gTasks[taskId].framesUntilMove = gTasks[taskId].tDelayInterval; offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } gTasks[taskId].data[3]++; if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - { gTasks[taskId].data[3] = 0; - } } } } @@ -193,44 +212,47 @@ static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) } } -u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 frequency, u8 amplitude, u8 a5, u8 a6, u8 a7) +// Initializes a background "wave" effect that affects scanlines startLine (inclusive) to endLine (exclusive). +// 'frequency' and 'amplitude' control the frequency and amplitude of the wave. +// 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames. +// 'regOffset' is the offset of the video register to modify. +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7) { int i; int offset; - struct UnknownTaskStruct unk; + struct ScanlineEffectParams params; u8 taskId; dp12_8087EA4(); - unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = HBLANK_DMA_CONTROL_16BIT; - unk.unk8 = 1; - unk.unk9 = 0; - - sub_80895F8(unk); + params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset); + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.unk8 = 1; + params.unk9 = 0; + ScanlineEffect_SetParams(params); - taskId = CreateTask(task00_for_dp12, 0); + taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0); - gTasks[taskId].data[0] = a1; - gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / frequency; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = a5; - gTasks[taskId].data[5] = a5; - gTasks[taskId].data[6] = a6; - gTasks[taskId].data[7] = a7; + gTasks[taskId].tStartLine = startLine; + gTasks[taskId].tEndLine = endLine; + gTasks[taskId].data[2] = 256 / frequency; + gTasks[taskId].data[3] = 0; + gTasks[taskId].framesUntilMove = delayInterval; + gTasks[taskId].tDelayInterval = delayInterval; + gTasks[taskId].tRegOffset = regOffset; + gTasks[taskId].data[7] = a7; gScanlineEffect.taskId = taskId; gUnknown_0202FFA4 = 0; - GenerateWave(&gUnknown_03004DE0[0][320], frequency, amplitude, a2 - a1); + GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine); offset = 320; - for (i = a1; i < a2; i++) + for (i = startLine; i < endLine; i++) { - gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; - gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; + gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset]; + gScanlineEffectRegBuffers[1][i] = gScanlineEffectRegBuffers[0][offset]; offset++; } diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 54af6013f..aeea3e292 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -3934,7 +3934,7 @@ static void VBlankCB_EvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void VBlankCB_TradeEvolutionScene(void) @@ -3950,7 +3950,7 @@ static void VBlankCB_TradeEvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void sub_81150D8(void) diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index ca4194800..2de3554fe 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -598,7 +598,7 @@ static void StartPokemonLogoShine(bool8 flashBackground) static void VBlankCB(void) { - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - ScanlineEffect_InitWave(0, 0xA0, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, 4, 1); SetMainCallback2(MainCB2); } break; diff --git a/sym_common.txt b/sym_common.txt index 8defbe866..85a5ad6e3 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -137,29 +137,7 @@ gUnknown_03004AE4: @ 3004AE4 .include "debug/mori_debug_menu.o" @ unknown_task - - .align 4 -gScanlineEffect: @ 3004DC0 - .space 0x20 - -gUnknown_03004DE0: @ 3004DE0 - .space 0x2 - -gUnknown_03004DE2: @ 3004DE2 - .space 0x2 - -gUnknown_03004DE4: @ 3004DE4 - .space 0x27C - -gUnknown_03005060: @ 3005060 - .space 0x500 - -gUnknown_03005560: @ 3005560 - .space 0x140 - -gUnknown_030056A0: @ 30056A0 - .space 0x640 - + .include "scanline_effect.o" .include "pokemon/pokemon_menu.o" .include "pokemon/pokedex.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index fc4ea94ef..dcbadf96e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -368,12 +368,7 @@ gUnknown_0202FF58: @ 202FF58 .include "src/battle/battle_setup.o" .include "src/field/wild_encounter.o" .include "src/field/field_effect.o" - -@ unknown_task - -gUnknown_0202FFA4: @ 202FFA4 - .space 0x4 - + .include "src/scanline_effect.o" .include "src/pokemon/pokemon_menu.o" .include "src/pokemon/pokedex.o" .include "src/engine/trainer_card.o" -- cgit v1.2.3 From bb2c758e8fa730b2bd19b92119a2bd7e37af57f8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 13:18:31 -0600 Subject: finish labeling scanline_effect.c --- asm/contest_link_80C2020.s | 26 ++--- asm/fight.s | 12 +-- asm/ground.s | 48 ++++----- asm/normal.s | 32 +++--- asm/pokenav.s | 2 +- asm/rock.s | 10 +- include/scanline_effect.h | 37 +++---- src/battle/anim/draw.c | 4 +- src/battle/battle_2.c | 20 ++-- src/battle/battle_4.c | 4 +- src/battle/battle_controller_player.c | 4 +- src/battle/battle_transition.c | 22 ++-- src/battle/reshow_battle_screen.c | 10 +- src/contest.c | 14 +-- src/debug/matsuda_debug_menu.c | 14 +-- src/easy_chat_1.c | 2 +- src/easy_chat_2.c | 2 +- src/engine/option_menu.c | 2 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/trainer_card.c | 2 +- src/field/field_screen_effect.c | 6 +- src/field/overworld.c | 2 +- src/field/start_menu.c | 2 +- src/pokemon/pokemon_summary_screen.c | 20 ++-- src/scanline_effect.c | 187 +++++++++++++++++----------------- src/scene/evolution_scene.c | 24 ++--- src/scene/hall_of_fame.c | 2 +- src/scene/title_screen.c | 2 +- sym_common.txt | 4 +- 29 files changed, 261 insertions(+), 257 deletions(-) diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 9cf156f07..6eac528df 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -94,9 +94,9 @@ sub_80C2020: @ 80C2020 strh r2, [r0] ldr r0, _080C2128 @ =gBattle_BG2_Y strh r2, [r0] - ldr r0, _080C212C @ =gUnknown_030041B0 + ldr r0, _080C212C @ =gBattle_BG3_X strh r2, [r0] - ldr r0, _080C2130 @ =gUnknown_030041B8 + ldr r0, _080C2130 @ =gBattle_BG3_Y strh r2, [r0] ldr r0, _080C2134 @ =gBattle_WIN0H strh r2, [r0] @@ -125,8 +125,8 @@ _080C211C: .4byte gBattle_BG1_X _080C2120: .4byte gBattle_BG1_Y _080C2124: .4byte gBattle_BG2_X _080C2128: .4byte gBattle_BG2_Y -_080C212C: .4byte gUnknown_030041B0 -_080C2130: .4byte gUnknown_030041B8 +_080C212C: .4byte gBattle_BG3_X +_080C2130: .4byte gBattle_BG3_Y _080C2134: .4byte gBattle_WIN0H _080C2138: .4byte gBattle_WIN0V _080C213C: .4byte gBattle_WIN1H @@ -396,7 +396,7 @@ sub_80C2358: @ 80C2358 movs r0, 0 bl SetVBlankCallback bl sub_80C2020 - bl dp12_8087EA4 + bl ScanlineEffect_Clear bl ResetPaletteFade bl ResetSpriteData bl ResetTasks @@ -506,11 +506,11 @@ sub_80C2448: @ 80C2448 ldrh r0, [r0] strh r0, [r1] adds r1, 0x2 - ldr r0, _080C24DC @ =gUnknown_030041B0 + ldr r0, _080C24DC @ =gBattle_BG3_X ldrh r0, [r0] strh r0, [r1] adds r1, 0x2 - ldr r0, _080C24E0 @ =gUnknown_030041B8 + ldr r0, _080C24E0 @ =gBattle_BG3_Y ldrh r0, [r0] strh r0, [r1] adds r1, 0x22 @@ -543,8 +543,8 @@ _080C24CC: .4byte gBattle_BG1_X _080C24D0: .4byte gBattle_BG1_Y _080C24D4: .4byte gBattle_BG2_X _080C24D8: .4byte gBattle_BG2_Y -_080C24DC: .4byte gUnknown_030041B0 -_080C24E0: .4byte gUnknown_030041B8 +_080C24DC: .4byte gBattle_BG3_X +_080C24E0: .4byte gBattle_BG3_Y _080C24E4: .4byte gBattle_WIN0H _080C24E8: .4byte gBattle_WIN0V _080C24EC: .4byte gBattle_WIN1H @@ -1826,11 +1826,11 @@ _080C2F24: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_start sub_80C2F28 sub_80C2F28: @ 80C2F28 push {r4,r5,lr} - ldr r2, _080C2F5C @ =gUnknown_030041B0 + ldr r2, _080C2F5C @ =gBattle_BG3_X ldrh r3, [r2] adds r0, r3, 0x2 strh r0, [r2] - ldr r4, _080C2F60 @ =gUnknown_030041B8 + ldr r4, _080C2F60 @ =gBattle_BG3_Y ldrh r5, [r4] adds r1, r5, 0x1 strh r1, [r4] @@ -1854,8 +1854,8 @@ _080C2F56: pop {r0} bx r0 .align 2, 0 -_080C2F5C: .4byte gUnknown_030041B0 -_080C2F60: .4byte gUnknown_030041B8 +_080C2F5C: .4byte gBattle_BG3_X +_080C2F60: .4byte gBattle_BG3_Y thumb_func_end sub_80C2F28 thumb_func_start sub_80C2F64 diff --git a/asm/fight.s b/asm/fight.s index d0d042113..1969aee14 100755 --- a/asm/fight.s +++ b/asm/fight.s @@ -1688,7 +1688,7 @@ _080D9CDE: lsls r0, 24 cmp r0, 0 bne _080D9D14 - ldr r1, _080D9D10 @ =gUnknown_030041B0 + ldr r1, _080D9D10 @ =gBattle_BG3_X ldrh r0, [r4, 0x1A] lsls r0, 16 asrs r0, 24 @@ -1699,9 +1699,9 @@ _080D9CDE: b _080D9D24 .align 2, 0 _080D9D0C: .4byte gAnimBankTarget -_080D9D10: .4byte gUnknown_030041B0 +_080D9D10: .4byte gBattle_BG3_X _080D9D14: - ldr r2, _080D9D64 @ =gUnknown_030041B0 + ldr r2, _080D9D64 @ =gBattle_BG3_X ldrh r1, [r4, 0x1A] lsls r1, 16 asrs r1, 24 @@ -1710,7 +1710,7 @@ _080D9D14: strh r0, [r2] adds r7, r2, 0 _080D9D24: - ldr r3, _080D9D68 @ =gUnknown_030041B8 + ldr r3, _080D9D68 @ =gBattle_BG3_Y ldrh r2, [r4, 0x1C] lsls r0, r2, 16 asrs r0, 24 @@ -1741,8 +1741,8 @@ _080D9D5C: pop {r0} bx r0 .align 2, 0 -_080D9D64: .4byte gUnknown_030041B0 -_080D9D68: .4byte gUnknown_030041B8 +_080D9D64: .4byte gBattle_BG3_X +_080D9D68: .4byte gBattle_BG3_Y _080D9D6C: .4byte gBattleAnimArgs thumb_func_end sub_80D9C80 diff --git a/asm/ground.s b/asm/ground.s index 0ba721042..e846d1c70 100755 --- a/asm/ground.s +++ b/asm/ground.s @@ -1243,14 +1243,14 @@ _080E189C: beq _080E18C8 cmp r0, 0x5 bne _080E1908 - ldr r0, _080E18C0 @ =gUnknown_030041B0 + ldr r0, _080E18C0 @ =gBattle_BG3_X ldrh r0, [r0] strh r0, [r4, 0x22] ldr r0, _080E18C4 @ =sub_80E1934 b _080E1926 .align 2, 0 _080E18BC: .4byte gAnimMovePower -_080E18C0: .4byte gUnknown_030041B0 +_080E18C0: .4byte gBattle_BG3_X _080E18C4: .4byte sub_80E1934 _080E18C8: movs r0, 0 @@ -1351,16 +1351,16 @@ _080E1962: ands r0, r1 cmp r0, 0 bne _080E198C - ldr r1, _080E1988 @ =gUnknown_030041B0 + ldr r1, _080E1988 @ =gBattle_BG3_X ldrh r0, [r3, 0x26] ldrh r2, [r3, 0x22] adds r0, r2 strh r0, [r1] b _080E1996 .align 2, 0 -_080E1988: .4byte gUnknown_030041B0 +_080E1988: .4byte gBattle_BG3_X _080E198C: - ldr r0, _080E19B4 @ =gUnknown_030041B0 + ldr r0, _080E19B4 @ =gBattle_BG3_X ldrh r1, [r3, 0x22] ldrh r2, [r3, 0x26] subs r1, r2 @@ -1382,7 +1382,7 @@ _080E1996: strh r0, [r3, 0x24] b _080E1A0C .align 2, 0 -_080E19B4: .4byte gUnknown_030041B0 +_080E19B4: .4byte gBattle_BG3_X _080E19B8: ldrh r0, [r3, 0xA] adds r0, 0x1 @@ -1397,16 +1397,16 @@ _080E19B8: ands r1, r0 cmp r1, 0 bne _080E19E4 - ldr r1, _080E19E0 @ =gUnknown_030041B0 + ldr r1, _080E19E0 @ =gBattle_BG3_X ldrh r0, [r3, 0x24] ldrh r2, [r3, 0x22] adds r0, r2 strh r0, [r1] b _080E19EE .align 2, 0 -_080E19E0: .4byte gUnknown_030041B0 +_080E19E0: .4byte gBattle_BG3_X _080E19E4: - ldr r0, _080E1A14 @ =gUnknown_030041B0 + ldr r0, _080E1A14 @ =gBattle_BG3_X ldrh r1, [r3, 0x22] ldrh r2, [r3, 0x24] subs r1, r2 @@ -1433,9 +1433,9 @@ _080E1A0C: strh r0, [r3, 0x8] b _080E1A24 .align 2, 0 -_080E1A14: .4byte gUnknown_030041B0 +_080E1A14: .4byte gBattle_BG3_X _080E1A18: - ldr r1, _080E1A28 @ =gUnknown_030041B0 + ldr r1, _080E1A28 @ =gBattle_BG3_X ldrh r0, [r3, 0x22] strh r0, [r1] adds r0, r2, 0 @@ -1444,7 +1444,7 @@ _080E1A24: pop {r0} bx r0 .align 2, 0 -_080E1A28: .4byte gUnknown_030041B0 +_080E1A28: .4byte gBattle_BG3_X thumb_func_end sub_80E1934 thumb_func_start sub_80E1A2C @@ -1719,10 +1719,10 @@ _080E1BE2: movs r0, 0xFF ands r1, r0 strh r1, [r4, 0xC] - ldr r2, _080E1C50 @ =gUnknown_030041B0 + ldr r2, _080E1C50 @ =gBattle_BG3_X ldrh r0, [r4, 0xA] strh r0, [r2] - ldr r0, _080E1C54 @ =gUnknown_030041B8 + ldr r0, _080E1C54 @ =gBattle_BG3_Y strh r1, [r0] ldrh r0, [r6, 0x4] strh r0, [r4, 0xE] @@ -1736,8 +1736,8 @@ _080E1C40: .4byte gAnimBankAttacker _080E1C44: .4byte sub_80E1C58 _080E1C48: .4byte gTasks _080E1C4C: .4byte 0x000001ff -_080E1C50: .4byte gUnknown_030041B0 -_080E1C54: .4byte gUnknown_030041B8 +_080E1C50: .4byte gBattle_BG3_X +_080E1C54: .4byte gBattle_BG3_Y thumb_func_end sub_80E1BB0 thumb_func_start sub_80E1C58 @@ -1757,10 +1757,10 @@ sub_80E1C58: @ 80E1C58 ldrsh r0, [r2, r4] cmp r1, r0 bne _080E1C98 - ldr r0, _080E1C90 @ =gUnknown_030041B0 + ldr r0, _080E1C90 @ =gBattle_BG3_X movs r1, 0 strh r1, [r0] - ldr r0, _080E1C94 @ =gUnknown_030041B8 + ldr r0, _080E1C94 @ =gBattle_BG3_Y strh r1, [r0] adds r0, r3, 0 bl DestroyTask @@ -1768,13 +1768,13 @@ sub_80E1C58: @ 80E1C58 .align 2, 0 _080E1C88: .4byte gTasks _080E1C8C: .4byte gBattleAnimArgs -_080E1C90: .4byte gUnknown_030041B0 -_080E1C94: .4byte gUnknown_030041B8 +_080E1C90: .4byte gBattle_BG3_X +_080E1C94: .4byte gBattle_BG3_Y _080E1C98: - ldr r1, _080E1CAC @ =gUnknown_030041B0 + ldr r1, _080E1CAC @ =gBattle_BG3_X ldrh r0, [r2, 0xA] strh r0, [r1] - ldr r1, _080E1CB0 @ =gUnknown_030041B8 + ldr r1, _080E1CB0 @ =gBattle_BG3_Y ldrh r0, [r2, 0xC] strh r0, [r1] _080E1CA4: @@ -1782,8 +1782,8 @@ _080E1CA4: pop {r0} bx r0 .align 2, 0 -_080E1CAC: .4byte gUnknown_030041B0 -_080E1CB0: .4byte gUnknown_030041B8 +_080E1CAC: .4byte gBattle_BG3_X +_080E1CB0: .4byte gBattle_BG3_Y thumb_func_end sub_80E1C58 .align 2, 0 @ Don't pad with nop. diff --git a/asm/normal.s b/asm/normal.s index a800b348a..8465e2c2b 100755 --- a/asm/normal.s +++ b/asm/normal.s @@ -1103,15 +1103,15 @@ _080E24F0: beq _080E2508 b _080E2518 _080E24F6: - ldr r1, _080E24FC @ =gUnknown_030041B0 + ldr r1, _080E24FC @ =gBattle_BG3_X b _080E250A .align 2, 0 -_080E24FC: .4byte gUnknown_030041B0 +_080E24FC: .4byte gBattle_BG3_X _080E2500: - ldr r1, _080E2504 @ =gUnknown_030041B8 + ldr r1, _080E2504 @ =gBattle_BG3_Y b _080E250A .align 2, 0 -_080E2504: .4byte gUnknown_030041B8 +_080E2504: .4byte gBattle_BG3_Y _080E2508: ldr r1, _080E2514 @ =gSpriteCoordOffsetX _080E250A: @@ -1359,10 +1359,10 @@ sub_80E26BC: @ 80E26BC strh r1, [r2, 0xE] ldrh r1, [r3, 0x6] strh r1, [r2, 0x18] - ldr r4, _080E2704 @ =gUnknown_030041B0 + ldr r4, _080E2704 @ =gBattle_BG3_X ldrh r1, [r3] strh r1, [r4] - ldr r4, _080E2708 @ =gUnknown_030041B8 + ldr r4, _080E2708 @ =gBattle_BG3_Y ldrh r1, [r3, 0x2] strh r1, [r4] ldr r1, _080E270C @ =sub_80E2710 @@ -1374,8 +1374,8 @@ sub_80E26BC: @ 80E26BC .align 2, 0 _080E26FC: .4byte gTasks _080E2700: .4byte gBattleAnimArgs -_080E2704: .4byte gUnknown_030041B0 -_080E2708: .4byte gUnknown_030041B8 +_080E2704: .4byte gBattle_BG3_X +_080E2708: .4byte gBattle_BG3_Y _080E270C: .4byte sub_80E2710 thumb_func_end sub_80E26BC @@ -1395,7 +1395,7 @@ sub_80E2710: @ 80E2710 mov r12, r1 cmp r0, 0 bne _080E2796 - ldr r0, _080E2744 @ =gUnknown_030041B0 + ldr r0, _080E2744 @ =gBattle_BG3_X ldrh r2, [r0] movs r7, 0x8 ldrsh r1, [r3, r7] @@ -1407,12 +1407,12 @@ sub_80E2710: @ 80E2710 b _080E274A .align 2, 0 _080E2740: .4byte gTasks -_080E2744: .4byte gUnknown_030041B0 +_080E2744: .4byte gBattle_BG3_X _080E2748: ldrh r0, [r3, 0x8] _080E274A: strh r0, [r6] - ldr r2, _080E2768 @ =gUnknown_030041B8 + ldr r2, _080E2768 @ =gBattle_BG3_Y ldrh r3, [r2] lsls r1, r5, 2 adds r0, r1, r5 @@ -1426,7 +1426,7 @@ _080E274A: movs r0, 0 b _080E2770 .align 2, 0 -_080E2768: .4byte gUnknown_030041B8 +_080E2768: .4byte gBattle_BG3_Y _080E276C: ldrh r0, [r4, 0xA] negs r0, r0 @@ -3905,13 +3905,13 @@ sub_80E3AD0: @ 80E3AD0 ldrh r7, [r1, 0x1E] adds r2, r7 strh r2, [r1, 0x1E] - ldr r6, _080E3B40 @ =gUnknown_030041B0 + ldr r6, _080E3B40 @ =gBattle_BG3_X lsls r0, r3, 16 asrs r0, 24 ldrh r4, [r6] adds r0, r4 strh r0, [r6] - ldr r4, _080E3B44 @ =gUnknown_030041B8 + ldr r4, _080E3B44 @ =gBattle_BG3_Y lsls r0, r2, 16 asrs r0, 24 ldrh r7, [r4] @@ -3942,8 +3942,8 @@ _080E3B36: bx r0 .align 2, 0 _080E3B3C: .4byte gTasks -_080E3B40: .4byte gUnknown_030041B0 -_080E3B44: .4byte gUnknown_030041B8 +_080E3B40: .4byte gBattle_BG3_X +_080E3B44: .4byte gBattle_BG3_Y _080E3B48: .4byte gBattleAnimArgs thumb_func_end sub_80E3AD0 diff --git a/asm/pokenav.s b/asm/pokenav.s index e1b30bdf7..67b4ece33 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -10956,7 +10956,7 @@ sub_80F5B50: @ 80F5B50 _080F5B68: .4byte gUnknown_083DFEC4 _080F5B6C: .4byte 0x00009345 _080F5B70: - bl dp12_8087EA4 + bl ScanlineEffect_Clear ldr r0, _080F5BA8 @ =gScanlineEffectRegBuffers movs r2, 0xEF movs r3, 0xF4 diff --git a/asm/rock.s b/asm/rock.s index 923c842be..2f878db2c 100755 --- a/asm/rock.s +++ b/asm/rock.s @@ -1549,7 +1549,7 @@ sub_80DDA8C: @ 80DDA8C movs r0, 0xC8 strh r0, [r5, 0xA] _080DDAAE: - ldr r4, _080DDAEC @ =gUnknown_030041B8 + ldr r4, _080DDAEC @ =gBattle_BG3_Y movs r1, 0xA ldrsh r0, [r5, r1] movs r1, 0xA @@ -1577,7 +1577,7 @@ _080DDADA: bx r0 .align 2, 0 _080DDAE8: .4byte gTasks -_080DDAEC: .4byte gUnknown_030041B8 +_080DDAEC: .4byte gBattle_BG3_Y thumb_func_end sub_80DDA8C thumb_func_start sub_80DDAF0 @@ -1600,7 +1600,7 @@ sub_80DDAF0: @ 80DDAF0 ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] - ldr r0, _080DDB60 @ =gUnknown_030041B8 + ldr r0, _080DDB60 @ =gBattle_BG3_Y ldrh r0, [r0] strh r0, [r4, 0xC] _080DDB1C: @@ -1609,7 +1609,7 @@ _080DDB1C: movs r1, 0xFF ands r0, r1 strh r0, [r4, 0xA] - ldr r6, _080DDB60 @ =gUnknown_030041B8 + ldr r6, _080DDB60 @ =gBattle_BG3_Y movs r2, 0xA ldrsh r1, [r4, r2] movs r0, 0x4 @@ -1635,7 +1635,7 @@ _080DDB54: bx r0 .align 2, 0 _080DDB5C: .4byte gTasks -_080DDB60: .4byte gUnknown_030041B8 +_080DDB60: .4byte gBattle_BG3_Y _080DDB64: .4byte gBattleAnimArgs _080DDB68: .4byte 0x00000fff thumb_func_end sub_80DDAF0 diff --git a/include/scanline_effect.h b/include/scanline_effect.h index 242b35448..314a856fa 100644 --- a/include/scanline_effect.h +++ b/include/scanline_effect.h @@ -4,25 +4,34 @@ // DMA control value to ransfer a single 16-bit value at HBlank #define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1) +#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1HOFS (REG_ADDR_BG1HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1VOFS (REG_ADDR_BG1VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2HOFS (REG_ADDR_BG2HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2VOFS (REG_ADDR_BG2VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3HOFS (REG_ADDR_BG3HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3VOFS (REG_ADDR_BG3VOFS - REG_ADDR_BG0HOFS) + struct ScanlineEffectParams { volatile void *dmaDest; u32 dmaControl; - u8 unk8; - u8 unk9; + u8 initState; + u8 unused9; }; struct ScanlineEffect { - void *src[2]; + void *dmaSrcBuffers[2]; volatile void *dmaDest; u32 dmaControl; void (*setFirstScanlineReg)(void); - u8 srcBank; - u8 unk15; - u8 unk16; - u8 unk17; - u8 taskId; + u8 srcBuffer; + u8 state; + u8 unused16; + u8 unused17; + u8 waveTaskId; u8 filler19[0x7]; }; @@ -31,15 +40,9 @@ extern struct ScanlineEffect gScanlineEffect; extern u16 gScanlineEffectRegBuffers[][0x3C0]; void ScanlineEffect_Stop(void); -void ScanlineEffect_Stop(void); -void dp12_8087EA4(void); -void dp12_8087EA4(void); -//void ScanlineEffect_SetParams(u32 i, u32 i1, u32 i2); -//void ScanlineEffect_SetParams(); -void ScanlineEffect_SetParams(struct ScanlineEffectParams unk); +void ScanlineEffect_Clear(void); +void ScanlineEffect_SetParams(struct ScanlineEffectParams); void ScanlineEffect_InitHBlankDmaTransfer(void); -void ScanlineEffect_InitHBlankDmaTransfer(); -//void ScanlineEffect_InitWave(int i, int i1, int i2, int i3, int i4, int i5, int i6); -u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7); #endif // GUARD_SCANLINE_EFFECT_H diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index fc74e3f46..f9e505bf2 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -53,8 +53,8 @@ void sub_80D0C88(u8 taskId) } params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; - params.unk8 = 1; - params.unk9 = 0; + params.initState = 1; + params.unused9 = 0; ScanlineEffect_SetParams(params); task->func = sub_80D0D68; } diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index f4fff742c..990535b4e 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -108,9 +108,9 @@ extern u16 gUnknown_02024DE8; extern u8 gActionSelectionCursor[]; extern u8 gMoveSelectionCursor[]; extern u8 gUnknown_02038470[]; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern struct Window gUnknown_030041D0; extern u16 gBattle_WIN1H; extern struct Window gUnknown_03004210; @@ -219,7 +219,7 @@ void InitBattle(void) REG_WINOUT = 0; gBattle_WIN0H = 0xF0; gBattle_WIN0V = 0x5051; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 80; i++) { @@ -242,8 +242,8 @@ void InitBattle(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; gBattleTerrain = BattleSetup_GetTerrain(); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); @@ -1064,8 +1064,8 @@ void sub_800FCFC(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; REG_WIN0H = gBattle_WIN0H; REG_WIN0V = gBattle_WIN0V; REG_WIN1H = gBattle_WIN1H; @@ -1197,7 +1197,7 @@ void c2_8011A1C(void) REG_WINOUT = 0; gBattle_WIN0H = 0xF0; gBattle_WIN0V = 0x5051; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 80; i++) { @@ -1218,8 +1218,8 @@ void c2_8011A1C(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 164329c1b..ae8f94130 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -93,7 +93,7 @@ extern u16 gChosenMove; //last used move in battle extern u8 gBankInMenu; extern u8 gActionForBanks[4]; extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one extern u8 gCurrentTurnActionNumber; extern u16 gTrappingMoves[]; @@ -17229,7 +17229,7 @@ static void atkF2_displaydexinfo(void) LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000)); LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); REG_BG3CNT = 0x5a0b; - gUnknown_030041B0 = 0x100; + gBattle_BG3_X = 0x100; BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0); gBattleCommunication[0]++; } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 489581132..a5f833b6c 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -67,9 +67,9 @@ extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gAnimMoveTurn; extern u8 gUnknown_02038470[]; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_X; diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 843203a1e..f7cdc0694 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -16,7 +16,7 @@ #include "scanline_effect.h" void sub_807DE10(void); -void dp12_8087EA4(void); +void ScanlineEffect_Clear(void); extern const struct OamData gFieldOamData_32x32; @@ -670,7 +670,7 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) u16 savedIME; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160); @@ -730,7 +730,7 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) u16 savedIME; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140); @@ -798,7 +798,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) u16 *dst1, *dst2; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); task->data[1] = 16; task->data[2] = 0; @@ -1076,7 +1076,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 0; TRANSITION_STRUCT.WINOUT = 63; @@ -1269,7 +1269,7 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 160; i++) { @@ -1348,7 +1348,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 63; TRANSITION_STRUCT.WINOUT = 0; @@ -1460,7 +1460,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); Mugshots_CreateOpponentPlayerSprites(task); task->data[1] = 0; @@ -1844,7 +1844,7 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); task->data[2] = 256; task->data[3] = 1; @@ -1943,7 +1943,7 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.BLDCNT = 0xBF; TRANSITION_STRUCT.BLDY = 0; @@ -2158,7 +2158,7 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 0x3F; TRANSITION_STRUCT.WINOUT = 0; diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 83dad5f60..a78cb20df 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -15,9 +15,9 @@ extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG0_Y; extern u8 gReservedSpritePaletteCount; extern u8 gActionSelectionCursor[4]; @@ -77,7 +77,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) switch (gReshowState) { case 0: - dp12_8087EA4(); + ScanlineEffect_Clear(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); @@ -87,8 +87,8 @@ static void CB2_ReshowBattleScreenAfterMenu(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; break; case 1: { diff --git a/src/contest.c b/src/contest.c index e41838cb1..875fe4502 100644 --- a/src/contest.c +++ b/src/contest.c @@ -51,9 +51,9 @@ extern u8 gBanksBySide[]; extern u8 gObjectBankIDs[]; extern u8 gIsLinkContest; extern u8 gContestPlayerMonIndex; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern s16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_WIN1H; extern struct Window gUnknown_03004210; extern u16 gBattle_WIN0V; @@ -330,8 +330,8 @@ void ResetContestGpuRegs(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; gBattle_WIN0H = 0; gBattle_WIN0V = 0; gBattle_WIN1H = 0; @@ -412,7 +412,7 @@ void CB2_StartContest(void) SetVBlankCallback(NULL); SetUpContestWindow(); ResetContestGpuRegs(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetPaletteFade(); gPaletteFade.bufferTransferDisabled = TRUE; DmaClearLarge32(3, (void *)VRAM, VRAM_SIZE, 0x1000); @@ -626,8 +626,8 @@ void ContestVBlankCallback(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; REG_WIN0H = gBattle_WIN0H; REG_WIN0V = gBattle_WIN0V; REG_WIN1H = gBattle_WIN1H; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 7c250b584..1da337b04 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -35,8 +35,8 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; extern struct Window gUnknown_03004210; extern u8 (*gCallback_03004AE8)(void); @@ -463,8 +463,8 @@ static void sub_80A9F50(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; } static void sub_80A9FE4(void) @@ -511,8 +511,8 @@ static void sub_80AA090(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -528,7 +528,7 @@ static void sub_80AA10C(void) gPaletteFade.bufferTransferDisabled = 1; SetVBlankCallback(0); sub_80A9F50(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetPaletteFade(); ResetSpriteData(); ResetTasks(); diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 3bed951d6..4b64846f9 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -297,7 +297,7 @@ void sub_80E62F8(void) SetVBlankCallback(0); ResetPaletteFade(); ResetSpriteData(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ScanlineEffect_Stop(); sub_80EAD08(); ScanlineEffect_SetParams(gUnknown_083DB698); diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index e7b65bef0..dc8bddd5a 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index cb5f66649..1fc78efaa 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -3,12 +3,12 @@ #include "main.h" #include "menu.h" #include "palette.h" +#include "scanline_effect.h" #include "sprite.h" #include "strings2.h" #include "task.h" extern void SetPokemonCryStereo(u32 val); -extern void ScanlineEffect_Stop(void); //Task data enum { diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index d077bc670..a8b49a8eb 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -439,7 +439,7 @@ void CB2_InitResetRtcScreen(void) ResetOamRange(0, 128); LoadOam(); ScanlineEffect_Stop(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetSpriteData(); ResetTasks(); ResetPaletteFade(); diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index be22b24c4..ab43ac716 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -730,7 +730,7 @@ bool8 sub_8093AA0(struct Task *task) u32 i; ewram0_2.var_4 = FALSE; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 0xA0; i++) gScanlineEffectRegBuffers[1][i] = -4; SetHBlankCallback(sub_8093D7C); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index bc70e1a63..61301c5a9 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -64,11 +64,11 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) @@ -85,7 +85,7 @@ static void sub_8081424(u8 taskId) } break; case 2: - dp12_8087EA4(); + ScanlineEffect_Clear(); DestroyTask(taskId); break; } diff --git a/src/field/overworld.c b/src/field/overworld.c index 2590852af..86b0a5dac 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1731,7 +1731,7 @@ void sub_8054D4C(u32 a1) ResetTasks(); ResetSpriteData(); ResetPaletteFade(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); sub_805C7C4(0); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 6017f56bf..d6881cb01 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -771,7 +771,7 @@ static bool32 sub_80719FC(u8 *step) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - dp12_8087EA4(); + ScanlineEffect_Clear(); break; case 2: Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index ec327796a..bf8306fc0 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -123,12 +123,12 @@ extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8); extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gUnknown_020384F0; extern u8 gUnknown_08208238[]; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern TaskFunc gUnknown_03005CF0; extern struct Sprite *gUnknown_020384F4; extern struct SpriteTemplate gUnknown_02024E8C; @@ -586,8 +586,8 @@ void sub_809D85C(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); @@ -813,11 +813,11 @@ bool8 sub_809DA84(void) case 20: if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) { - gUnknown_030041B0 = 256; + gBattle_BG3_X = 256; } else { - gUnknown_030041B0 = 0; + gBattle_BG3_X = 0; } gMain.state++; @@ -872,8 +872,8 @@ static void sub_809DE64(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; @@ -2176,11 +2176,11 @@ void sub_809F43C(u8 taskId) pssData.loadGfxState = 0; if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) { - gUnknown_030041B0 = 256; + gBattle_BG3_X = 256; } else { - gUnknown_030041B0 = 0; + gBattle_BG3_X = 0; } gMain.state++; diff --git a/src/scanline_effect.c b/src/scanline_effect.c index 0fa5b024d..b4de0689f 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -13,10 +13,10 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; -EWRAM_DATA static u8 gUnknown_0202FFA4 = 0; +EWRAM_DATA static u8 sShouldStopWaveTask = FALSE; struct ScanlineEffect gScanlineEffect; @@ -27,27 +27,27 @@ u16 gScanlineEffectRegBuffers[2][0x3C0]; void ScanlineEffect_Stop(void) { - gScanlineEffect.unk15 = 0; + gScanlineEffect.state = 0; DmaStop(0); - if (gScanlineEffect.taskId != 0xFF) + if (gScanlineEffect.waveTaskId != 0xFF) { - DestroyTask(gScanlineEffect.taskId); - gScanlineEffect.taskId = 0xFF; + DestroyTask(gScanlineEffect.waveTaskId); + gScanlineEffect.waveTaskId = 0xFF; } } -void dp12_8087EA4(void) +void ScanlineEffect_Clear(void) { CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); - gScanlineEffect.src[0] = NULL; - gScanlineEffect.src[1] = NULL; + gScanlineEffect.dmaSrcBuffers[0] = NULL; + gScanlineEffect.dmaSrcBuffers[1] = NULL; gScanlineEffect.dmaDest = NULL; gScanlineEffect.dmaControl = 0; - gScanlineEffect.srcBank = 0; - gScanlineEffect.unk15 = 0; - gScanlineEffect.unk16 = 0; - gScanlineEffect.unk17 = 0; - gScanlineEffect.taskId = 0xFF; + gScanlineEffect.srcBuffer = 0; + gScanlineEffect.state = 0; + gScanlineEffect.unused16 = 0; + gScanlineEffect.unused17 = 0; + gScanlineEffect.waveTaskId = 0xFF; } void ScanlineEffect_SetParams(struct ScanlineEffectParams params) @@ -56,48 +56,49 @@ void ScanlineEffect_SetParams(struct ScanlineEffectParams params) { // Set the DMA src to the value for the second scanline because the // first DMA transfer occurs in HBlank *after* the first scanline is drawn - gScanlineEffect.src[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; - gScanlineEffect.src[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.dmaSrcBuffers[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; gScanlineEffect.setFirstScanlineReg = CopyValue16Bit; } else // assume 32-bit { // Set the DMA src to the value for the second scanline because the // first DMA transfer occurs in HBlank *after* the first scanline is drawn - gScanlineEffect.src[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; - gScanlineEffect.src[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.dmaSrcBuffers[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; gScanlineEffect.setFirstScanlineReg = CopyValue32Bit; } gScanlineEffect.dmaControl = params.dmaControl; - gScanlineEffect.dmaDest = params.dmaDest; - gScanlineEffect.unk15 = params.unk8; - gScanlineEffect.unk16 = params.unk9; - gScanlineEffect.unk17 = params.unk9; + gScanlineEffect.dmaDest = params.dmaDest; + gScanlineEffect.state = params.initState; + gScanlineEffect.unused16 = params.unused9; + gScanlineEffect.unused17 = params.unused9; } void ScanlineEffect_InitHBlankDmaTransfer(void) { - if (gScanlineEffect.unk15 != 0) + if (gScanlineEffect.state == 0) { - if (gScanlineEffect.unk15 == 3) - { - gScanlineEffect.unk15 = 0; - DmaStop(0); - gUnknown_0202FFA4 = 1; - } - else - { - DmaStop(0); - // Set DMA to copy to dest register on each HBlank for the next frame. - // The HBlank DMA transfers do not occurr during VBlank, so the transfer - // will begin on the HBlank after the first scanline - DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); - // Manually set the reg for the first scanline - gScanlineEffect.setFirstScanlineReg(); - // Swap current buffer - gScanlineEffect.srcBank ^= 1; - } + return; + } + else if (gScanlineEffect.state == 3) + { + gScanlineEffect.state = 0; + DmaStop(0); + sShouldStopWaveTask = TRUE; + } + else + { + DmaStop(0); + // Set DMA to copy to dest register on each HBlank for the next frame. + // The HBlank DMA transfers do not occurr during VBlank, so the transfer + // will begin on the HBlank after the first scanline + DmaSet(0, gScanlineEffect.dmaSrcBuffers[gScanlineEffect.srcBuffer], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); + // Manually set the reg for the first scanline + gScanlineEffect.setFirstScanlineReg(); + // Swap current buffer + gScanlineEffect.srcBuffer ^= 1; } } @@ -107,7 +108,7 @@ void ScanlineEffect_InitHBlankDmaTransfer(void) static void CopyValue16Bit(void) { u16 *dest = (u16 *)gScanlineEffect.dmaDest; - u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; *dest = *src; } @@ -115,86 +116,87 @@ static void CopyValue16Bit(void) static void CopyValue32Bit(void) { u32 *dest = (u32 *)gScanlineEffect.dmaDest; - u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; *dest = *src; } -#define tStartLine data[0] -#define tEndLine data[1] -#define framesUntilMove data[4] -#define tDelayInterval data[5] -#define tRegOffset data[6] +#define tStartLine data[0] +#define tEndLine data[1] +#define tWaveLength data[2] +#define tSrcBufferOffset data[3] +#define tFramesUntilMove data[4] +#define tDelayInterval data[5] +#define tRegOffset data[6] +#define tApplyBattleBgOffsets data[7] static void TaskFunc_UpdateWavePerFrame(u8 taskId) { int value = 0; + int i; + int offset; - if (gUnknown_0202FFA4) + if (sShouldStopWaveTask) { DestroyTask(taskId); - gScanlineEffect.taskId = 0xFF; + gScanlineEffect.waveTaskId = 0xFF; } else { - if (gTasks[taskId].data[7]) + if (gTasks[taskId].tApplyBattleBgOffsets) { switch (gTasks[taskId].tRegOffset) { - case 0x0: + case SCANLINE_EFFECT_REG_BG0HOFS: value = gBattle_BG0_X; break; - case 0x2: + case SCANLINE_EFFECT_REG_BG0VOFS: value = gBattle_BG0_Y; break; - case 0x4: + case SCANLINE_EFFECT_REG_BG1HOFS: value = gBattle_BG1_X; break; - case 0x6: + case SCANLINE_EFFECT_REG_BG1VOFS: value = gBattle_BG1_Y; break; - case 0x8: + case SCANLINE_EFFECT_REG_BG2HOFS: value = gBattle_BG2_X; break; - case 0xA: + case SCANLINE_EFFECT_REG_BG2VOFS: value = gBattle_BG2_Y; break; - case 0xC: - value = gUnknown_030041B0; + case SCANLINE_EFFECT_REG_BG3HOFS: + value = gBattle_BG3_X; break; - case 0xE: - value = gUnknown_030041B8; + case SCANLINE_EFFECT_REG_BG3VOFS: + value = gBattle_BG3_Y; break; } } - if (gTasks[taskId].framesUntilMove != 0) + if (gTasks[taskId].tFramesUntilMove != 0) { - int i; - int offset; - - gTasks[taskId].framesUntilMove--; - offset = gTasks[taskId].data[3] + 320; + gTasks[taskId].tFramesUntilMove--; + offset = gTasks[taskId].tSrcBufferOffset + 320; for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } } else { - int i; - int offset; - - gTasks[taskId].framesUntilMove = gTasks[taskId].tDelayInterval; - offset = gTasks[taskId].data[3] + 320; + gTasks[taskId].tFramesUntilMove = gTasks[taskId].tDelayInterval; + offset = gTasks[taskId].tSrcBufferOffset + 320; for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } - gTasks[taskId].data[3]++; - if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - gTasks[taskId].data[3] = 0; + + // increment src buffer offset + gTasks[taskId].tSrcBufferOffset++; + if (gTasks[taskId].tSrcBufferOffset == gTasks[taskId].tWaveLength) + gTasks[taskId].tSrcBufferOffset = 0; } } } @@ -216,39 +218,38 @@ static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) // 'frequency' and 'amplitude' control the frequency and amplitude of the wave. // 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames. // 'regOffset' is the offset of the video register to modify. -u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7) +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets) { int i; int offset; struct ScanlineEffectParams params; u8 taskId; - dp12_8087EA4(); + ScanlineEffect_Clear(); params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset); params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; - params.unk8 = 1; - params.unk9 = 0; + params.initState = 1; + params.unused9 = 0; ScanlineEffect_SetParams(params); taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0); - gTasks[taskId].tStartLine = startLine; - gTasks[taskId].tEndLine = endLine; - gTasks[taskId].data[2] = 256 / frequency; - gTasks[taskId].data[3] = 0; - gTasks[taskId].framesUntilMove = delayInterval; - gTasks[taskId].tDelayInterval = delayInterval; - gTasks[taskId].tRegOffset = regOffset; - gTasks[taskId].data[7] = a7; + gTasks[taskId].tStartLine = startLine; + gTasks[taskId].tEndLine = endLine; + gTasks[taskId].tWaveLength = 256 / frequency; + gTasks[taskId].tSrcBufferOffset = 0; + gTasks[taskId].tFramesUntilMove = delayInterval; + gTasks[taskId].tDelayInterval = delayInterval; + gTasks[taskId].tRegOffset = regOffset; + gTasks[taskId].tApplyBattleBgOffsets = applyBattleBgOffsets; - gScanlineEffect.taskId = taskId; - gUnknown_0202FFA4 = 0; + gScanlineEffect.waveTaskId = taskId; + sShouldStopWaveTask = FALSE; GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine); offset = 320; - for (i = startLine; i < endLine; i++) { gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset]; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index aeea3e292..53eb2f1e8 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -71,8 +71,8 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; extern u8 gBattleTerrain; extern u8 gReservedSpritePaletteCount; extern u16 gMoveToLearn; @@ -206,8 +206,8 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; @@ -314,8 +314,8 @@ static void CB2_EvolutionSceneLoadGraphics(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; @@ -368,8 +368,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; gMain.state++; break; case 1: @@ -3929,8 +3929,8 @@ static void VBlankCB_EvolutionScene(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -3945,8 +3945,8 @@ static void VBlankCB_TradeEvolutionScene(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index f39745c02..303dcf3e0 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -16,6 +16,7 @@ #include "data2.h" #include "decompress.h" #include "random.h" +#include "scanline_effect.h" #include "trig.h" #include "ewram.h" @@ -95,7 +96,6 @@ bool8 sub_80C5DCC(void); bool8 sub_80C5F98(void); void ReturnFromHallOfFamePC(void); u16 SpeciesToPokedexNum(u16 species); -void ScanlineEffect_Stop(void); // data and gfx diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 2de3554fe..202b752a6 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); SetMainCallback2(MainCB2); } break; diff --git a/sym_common.txt b/sym_common.txt index 85a5ad6e3..cfb1b6b13 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -8,13 +8,13 @@ @ battle .align 2 -gUnknown_030041B0: @ 30041B0 +gBattle_BG3_X: @ 30041B0 .space 0x4 gBattle_BG1_Y: @ 30041B4 .space 0x4 -gUnknown_030041B8: @ 30041B8 +gBattle_BG3_Y: @ 30041B8 .space 0x8 gBattleTextBuff1: @ 30041C0 -- cgit v1.2.3 From 8d658666a14f8364df32d3f14c6923ebe194153e Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Wed, 10 Jan 2018 17:03:17 -0500 Subject: decompiled up to sub_80DFBD8 --- asm/dragon.s | 827 ----------------------------------------------- ld_script.txt | 1 + src/battle/anim/dragon.c | 262 +++++++++++++++ 3 files changed, 263 insertions(+), 827 deletions(-) create mode 100755 src/battle/anim/dragon.c diff --git a/asm/dragon.s b/asm/dragon.s index 7c4ea0547..bb7ba83d9 100755 --- a/asm/dragon.s +++ b/asm/dragon.s @@ -7,833 +7,6 @@ @ dragon - thumb_func_start sub_80DF5A0 -sub_80DF5A0: @ 80DF5A0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _080DF5E8 @ =gAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DF5F0 - ldr r2, _080DF5EC @ =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x6] - negs r0, r0 - strh r0, [r2, 0x6] - ldrh r0, [r2, 0x8] - negs r0, r0 - strh r0, [r2, 0x8] - adds r1, r2, 0 - b _080DF5FA - .align 2, 0 -_080DF5E8: .4byte gAnimBankAttacker -_080DF5EC: .4byte gBattleAnimArgs -_080DF5F0: - ldr r1, _080DF630 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] -_080DF5FA: - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x2E] - ldrh r0, [r1, 0x6] - strh r0, [r5, 0x30] - ldrh r0, [r1, 0x8] - strh r0, [r5, 0x34] - ldrh r0, [r1, 0xA] - strh r0, [r5, 0x38] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r1, _080DF634 @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - ldr r0, _080DF638 @ =sub_8078504 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF630: .4byte gBattleAnimArgs -_080DF634: .4byte move_anim_8074EE0 -_080DF638: .4byte sub_8078504 - thumb_func_end sub_80DF5A0 - - thumb_func_start sub_80DF63C -sub_80DF63C: @ 80DF63C - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_8078650 - ldr r4, _080DF694 @ =gAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x32] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x36] - ldr r0, _080DF698 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DF6A0 - ldr r2, _080DF69C @ =gBattleAnimArgs - ldrh r0, [r5, 0x20] - ldrh r1, [r2, 0x2] - subs r0, r1 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x22] - adds r1, r0 - strh r1, [r5, 0x22] - ldrh r0, [r5, 0x32] - ldrh r1, [r2, 0x4] - subs r0, r1 - strh r0, [r5, 0x32] - ldrh r0, [r2, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 - strh r0, [r5, 0x36] - b _080DF6CA - .align 2, 0 -_080DF694: .4byte gAnimBankTarget -_080DF698: .4byte gAnimBankAttacker -_080DF69C: .4byte gBattleAnimArgs -_080DF6A0: - ldr r1, _080DF6E4 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r5, 0x20] - adds r0, r2 - strh r0, [r5, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - ldrh r0, [r1, 0x4] - ldrh r2, [r5, 0x32] - adds r0, r2 - strh r0, [r5, 0x32] - ldrh r0, [r1, 0x6] - ldrh r1, [r5, 0x36] - adds r0, r1 - strh r0, [r5, 0x36] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080DF6CA: - ldr r0, _080DF6E4 @ =gBattleAnimArgs - ldrh r0, [r0, 0x8] - strh r0, [r5, 0x2E] - ldr r0, _080DF6E8 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080DF6EC @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF6E4: .4byte gBattleAnimArgs -_080DF6E8: .4byte sub_8078B34 -_080DF6EC: .4byte move_anim_8074EE0 - thumb_func_end sub_80DF63C - - thumb_func_start sub_80DF6F0 -sub_80DF6F0: @ 80DF6F0 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _080DF704 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080DF70C - ldr r4, _080DF708 @ =gAnimBankAttacker - b _080DF70E - .align 2, 0 -_080DF704: .4byte gBattleAnimArgs -_080DF708: .4byte gAnimBankAttacker -_080DF70C: - ldr r4, _080DF750 @ =gAnimBankTarget -_080DF70E: - ldrb r0, [r4] - movs r1, 0 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x1 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r4, _080DF754 @ =gBattleAnimArgs - movs r0, 0x2 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_807867C - ldrh r0, [r4, 0x4] - ldrh r1, [r5, 0x22] - adds r0, r1 - strh r0, [r5, 0x22] - ldr r0, _080DF758 @ =sub_8078600 - str r0, [r5, 0x1C] - ldr r1, _080DF75C @ =move_anim_8074EE0 - adds r0, r5, 0 - bl StoreSpriteCallbackInData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080DF750: .4byte gAnimBankTarget -_080DF754: .4byte gBattleAnimArgs -_080DF758: .4byte sub_8078600 -_080DF75C: .4byte move_anim_8074EE0 - thumb_func_end sub_80DF6F0 - - thumb_func_start sub_80DF760 -sub_80DF760: @ 80DF760 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080DF788 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080DF77A - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080DF77A: - adds r0, r4, 0 - bl sub_80DF63C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DF788: .4byte gAnimBankAttacker - thumb_func_end sub_80DF760 - - thumb_func_start sub_80DF78C -sub_80DF78C: @ 80DF78C - push {r4-r7,lr} - adds r6, r0, 0 - ldr r4, _080DF7E0 @ =gAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r6, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x22] - strh r5, [r6, 0x36] - movs r0, 0x1 - strh r0, [r6, 0x38] - ldr r0, _080DF7E4 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r6, 0x3A] - ldr r4, _080DF7E8 @ =gBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl sub_807A100 - lsls r7, r0, 16 - lsrs r5, r7, 16 - ldrb r0, [r4] - movs r1, 0x1 - bl sub_807A100 - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r5, r0 - bls _080DF7EC - lsrs r0, r7, 17 - b _080DF7EE - .align 2, 0 -_080DF7E0: .4byte gAnimBankAttacker -_080DF7E4: .4byte gBattleAnimArgs -_080DF7E8: .4byte gBankAttacker -_080DF7EC: - lsrs r0, r1, 17 -_080DF7EE: - strh r0, [r6, 0x3C] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x3C - ldrsh r1, [r6, r2] - bl Cos - strh r0, [r6, 0x24] - movs r1, 0x3A - ldrsh r0, [r6, r1] - movs r2, 0x3C - ldrsh r1, [r6, r2] - bl Sin - strh r0, [r6, 0x26] - ldr r0, _080DF818 @ =sub_80DF81C - str r0, [r6, 0x1C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DF818: .4byte sub_80DF81C - thumb_func_end sub_80DF78C - - thumb_func_start sub_80DF81C -sub_80DF81C: @ 80DF81C - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _080DF82E - cmp r5, 0x1 - beq _080DF89A - b _080DF91E -_080DF82E: - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x38] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080DF880 - strh r5, [r4, 0x36] - ldrh r1, [r4, 0x38] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080DF880 - adds r0, r1, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080DF880 - movs r0, 0x10 - strh r0, [r4, 0x38] -_080DF880: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080DF91E - movs r0, 0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080DF91E -_080DF89A: - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x38] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0x95 - bgt _080DF8C2 - adds r0, r1, 0 - adds r0, 0x8 - strh r0, [r4, 0x3C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x95 - ble _080DF8C2 - movs r0, 0x96 - strh r0, [r4, 0x3C] -_080DF8C2: - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080DF90A - movs r0, 0 - strh r0, [r4, 0x36] - ldrh r1, [r4, 0x38] - movs r2, 0x38 - ldrsh r0, [r4, r2] - cmp r0, 0xF - bgt _080DF90A - adds r0, r1, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080DF90A - movs r0, 0x10 - strh r0, [r4, 0x38] -_080DF90A: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080DF91E - adds r0, r4, 0 - bl DestroyAnimSprite -_080DF91E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DF81C - - thumb_func_start sub_80DF924 -sub_80DF924: @ 80DF924 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080DF950 @ =gTasks - adds r4, r1, r0 - ldr r0, _080DF954 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DF960 - ldr r0, _080DF958 @ =REG_BG1HOFS - str r0, [sp] - ldr r0, _080DF95C @ =gBattle_BG1_X - b _080DF966 - .align 2, 0 -_080DF950: .4byte gTasks -_080DF954: .4byte gAnimBankAttacker -_080DF958: .4byte REG_BG1HOFS -_080DF95C: .4byte gBattle_BG1_X -_080DF960: - ldr r0, _080DF9DC @ =REG_BG2HOFS - str r0, [sp] - ldr r0, _080DF9E0 @ =gBattle_BG2_X -_080DF966: - ldrh r0, [r0] - strh r0, [r4, 0xC] - ldr r0, _080DF9E4 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r5, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - strb r5, [r0, 0x9] - ldr r0, _080DF9E8 @ =gAnimBankAttacker - ldrb r0, [r0] - bl sub_8077FC0 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - subs r1, 0x20 - strh r1, [r4, 0xE] - adds r0, 0x20 - strh r0, [r4, 0x10] - cmp r1, 0 - bge _080DF996 - strh r5, [r4, 0xE] -_080DF996: - ldrh r3, [r4, 0xE] - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bgt _080DF9C4 - ldr r5, _080DF9EC @ =gUnknown_03004DE0 - movs r0, 0xF0 - lsls r0, 3 - adds r6, r5, r0 -_080DF9A8: - lsls r1, r3, 1 - adds r2, r1, r5 - ldrh r0, [r4, 0xC] - strh r0, [r2] - adds r1, r6 - ldrh r0, [r4, 0xC] - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - ble _080DF9A8 -_080DF9C4: - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - ldr r0, _080DF9F0 @ =sub_80DF9F4 - str r0, [r4] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DF9DC: .4byte REG_BG2HOFS -_080DF9E0: .4byte gBattle_BG2_X -_080DF9E4: .4byte 0xa2600001 -_080DF9E8: .4byte gAnimBankAttacker -_080DF9EC: .4byte gUnknown_03004DE0 -_080DF9F0: .4byte sub_80DF9F4 - thumb_func_end sub_80DF924 - - thumb_func_start sub_80DF9F4 -sub_80DF9F4: @ 80DF9F4 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _080DFA18 @ =gTasks - adds r2, r0, r1 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0x4 - bhi _080DFAAA - lsls r0, 2 - ldr r1, _080DFA1C @ =_080DFA20 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080DFA18: .4byte gTasks -_080DFA1C: .4byte _080DFA20 - .align 2, 0 -_080DFA20: - .4byte _080DFA34 - .4byte _080DFA56 - .4byte _080DFA66 - .4byte _080DFA92 - .4byte _080DFAA4 -_080DFA34: - ldrh r0, [r2, 0x16] - adds r0, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DFA8A - movs r0, 0 - strh r0, [r2, 0x16] - ldrh r0, [r2, 0x14] - adds r0, 0x1 - strh r0, [r2, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _080DFA8A - b _080DFA84 -_080DFA56: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080DFA8A - b _080DFA84 -_080DFA66: - ldrh r0, [r2, 0x16] - adds r0, 0x1 - strh r0, [r2, 0x16] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080DFA8A - movs r0, 0 - strh r0, [r2, 0x16] - ldrh r0, [r2, 0x14] - subs r0, 0x1 - strh r0, [r2, 0x14] - lsls r0, 16 - cmp r0, 0 - bne _080DFA8A -_080DFA84: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_080DFA8A: - adds r0, r2, 0 - bl sub_80DFAB0 - b _080DFAAA -_080DFA92: - ldr r1, _080DFAA0 @ =gUnknown_03004DC0 - movs r0, 0x3 - strb r0, [r1, 0x15] - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _080DFAAA - .align 2, 0 -_080DFAA0: .4byte gUnknown_03004DC0 -_080DFAA4: - adds r0, r3, 0 - bl DestroyAnimVisualTask -_080DFAAA: - pop {r0} - bx r0 - thumb_func_end sub_80DF9F4 - - thumb_func_start sub_80DFAB0 -sub_80DFAB0: @ 80DFAB0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - ldrh r3, [r5, 0x12] - ldrh r4, [r5, 0xE] - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r4, r0 - bgt _080DFB06 - ldr r7, _080DFB1C @ =gUnknown_03004DE0 - mov r12, r7 - ldr r0, _080DFB20 @ =gSineTable - mov r8, r0 - ldr r6, _080DFB24 @ =gUnknown_03004DC0 -_080DFACE: - lsls r2, r4, 1 - ldrb r1, [r6, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - add r2, r12 - lsls r0, r3, 1 - add r0, r8 - movs r7, 0 - ldrsh r1, [r0, r7] - movs r7, 0x14 - ldrsh r0, [r5, r7] - muls r0, r1 - asrs r0, 7 - ldrh r1, [r5, 0xC] - adds r0, r1 - strh r0, [r2] - adds r3, 0x8 - movs r0, 0xFF - ands r3, r0 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - movs r7, 0x10 - ldrsh r0, [r5, r7] - cmp r4, r0 - ble _080DFACE -_080DFB06: - ldrh r0, [r5, 0x12] - adds r0, 0x9 - movs r1, 0xFF - ands r0, r1 - strh r0, [r5, 0x12] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080DFB1C: .4byte gUnknown_03004DE0 -_080DFB20: .4byte gSineTable -_080DFB24: .4byte gUnknown_03004DC0 - thumb_func_end sub_80DFAB0 - - thumb_func_start sub_80DFB28 -sub_80DFB28: @ 80DFB28 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - ldr r5, _080DFBC8 @ =gBattleAnimArgs - movs r0, 0x4 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - movs r1, 0x5 - bl __divsi3 - adds r6, r0, 0 - ldr r1, _080DFBCC @ =gAnimBankAttacker - mov r8, r1 - ldrb r0, [r1] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - mov r2, r8 - ldrb r0, [r2] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - ldrh r3, [r5, 0x8] - adds r0, r3 - strh r0, [r4, 0x22] - movs r1, 0x2 - ldrsh r0, [r5, r1] - movs r2, 0x4 - ldrsh r1, [r5, r2] - bl Cos - strh r0, [r4, 0x30] - movs r3, 0x2 - ldrsh r0, [r5, r3] - lsls r6, 16 - asrs r6, 16 - adds r1, r6, 0 - bl Sin - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x30] - ldrh r2, [r5] - adds r3, r2, 0 - muls r3, r1 - adds r1, r3, 0 - ldrh r3, [r4, 0x20] - adds r1, r3 - strh r1, [r4, 0x20] - adds r1, r2, 0 - muls r1, r0 - adds r0, r1, 0 - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrh r0, [r5, 0x6] - strh r0, [r4, 0x34] - ldr r0, _080DFBD0 @ =sub_80DFBD8 - str r0, [r4, 0x1C] - adds r4, 0x2E - ldr r2, _080DFBD4 @ =gUnknown_03000730 - movs r1, 0x6 -_080DFBB0: - ldrh r0, [r4] - strh r0, [r2] - adds r4, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080DFBB0 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DFBC8: .4byte gBattleAnimArgs -_080DFBCC: .4byte gAnimBankAttacker -_080DFBD0: .4byte sub_80DFBD8 -_080DFBD4: .4byte gUnknown_03000730 - thumb_func_end sub_80DFB28 - - thumb_func_start sub_80DFBD8 -sub_80DFBD8: @ 80DFBD8 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x36] - adds r0, r1 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x38] - adds r0, r2 - strh r0, [r4, 0x38] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x24] - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r1, 0xA - bl __divsi3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _080DFC1C - adds r0, r4, 0 - bl DestroyAnimSprite -_080DFC1C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80DFBD8 - thumb_func_start sub_80DFC24 sub_80DFC24: @ 80DFC24 push {r4,lr} diff --git a/ld_script.txt b/ld_script.txt index 11a430764..acc368cc8 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -295,6 +295,7 @@ SECTIONS { asm/bug.o(.text); asm/rock.o(.text); asm/ghost.o(.text); + src/battle/anim/dragon.o(.text); asm/dragon.o(.text); asm/dark.o(.text); asm/ground.o(.text); diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c new file mode 100755 index 000000000..04859e39f --- /dev/null +++ b/src/battle/anim/dragon.c @@ -0,0 +1,262 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "unknown_task.h" + +void sub_80DF81C(struct Sprite *sprite); +void sub_80DFBD8(struct Sprite *sprite); + +void sub_80DF9F4(u8 taskId); + +void sub_80DFAB0(struct Task *task); + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u8 gBankAttacker; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG2_X; +extern u16 gUnknown_03000730[]; + + +// Outrage +void sub_80DF5A0(struct Sprite *sprite) +{ + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); + if (GetBankSide(gAnimBankAttacker)) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + gBattleAnimArgs[4] = -gBattleAnimArgs[4]; + } + else + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + sprite->invisible = 1; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_8078504; +} + +void sub_80DF63C(struct Sprite *sprite) +{ + sub_8078650(sprite); + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + if (GetBankSide(gAnimBankAttacker)) + { + sprite->pos1.x -= gBattleAnimArgs[1]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[2] -= gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[2] += gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + StartSpriteAnim(sprite, 1); + } + sprite->data[0] = gBattleAnimArgs[4]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); +} + +void sub_80DF6F0(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1); + } + else + { + sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0); + sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1); + } + sub_807867C(sprite, gBattleAnimArgs[1]); + sprite->pos1.y += gBattleAnimArgs[2]; + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); +} + +void sub_80DF760(struct Sprite *sprite) +{ + if (GetBankSide(gAnimBankAttacker)) + StartSpriteAffineAnim(sprite, 1); + sub_80DF63C(sprite); +} + +void sub_80DF78C(struct Sprite *sprite) +{ + u16 r5; + u16 r0; + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); + sprite->data[4] = 0; + sprite->data[5] = 1; + sprite->data[6] = gBattleAnimArgs[0]; + r5 = sub_807A100(gBankAttacker, 0); + r0 = sub_807A100(gBankAttacker, 1); + if (r5 > r0) + sprite->data[7] = r5 / 2; + else + sprite->data[7] = r0 / 2; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + sprite->callback = sub_80DF81C; +} + +void sub_80DF81C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + if (++sprite->data[4] > 5) + { + sprite->data[4] = 0; + if (sprite->data[5] <= 15 && ++sprite->data[5] > 15) + sprite->data[5] = 16; + } + if (++sprite->data[3] > 0x3C) + { + sprite->data[3] = 0; + sprite->data[0]++; + } + break; + case 1: + sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; + if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95) + sprite->data[7] = 0x96; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + if (++sprite->data[4] > 5) + { + sprite->data[4] = 0; + if (sprite->data[5] <= 15 && ++sprite->data[5] > 15) + sprite->data[5] = 16; + } + if (++sprite->data[3] > 20) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_80DF924(u8 taskId) +{ + struct UnknownTaskStruct sp; + struct Task *task = &gTasks[taskId]; + u16 i; + u8 r1; + if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) + { + sp.dest = ®_BG1HOFS; + task->data[2] = gBattle_BG1_X; + } + else + { + sp.dest = ®_BG2HOFS; + task->data[2] = gBattle_BG2_X; + } + sp.control = 0xA2600001; + sp.unk8 = 1; + sp.unk9 = 0; + r1 = sub_8077FC0(gAnimBankAttacker); + task->data[3] = r1 - 32; + task->data[4] = r1 + 32; + if (task->data[3] < 0) + task->data[3] = 0; + for(i = task->data[3];i <= task->data[4];i++) + { + gUnknown_03004DE0[0][i] = task->data[2]; + gUnknown_03004DE0[1][i] = task->data[2]; + } + sub_80895F8(sp); + task->func = sub_80DF9F4; +} + +void sub_80DF9F4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + if (++task->data[7] > 1) + { + task->data[7] = 0; + if (++task->data[6] == 3) + task->data[0]++; + } + sub_80DFAB0(task); + break; + case 1: + if (++task->data[1] > 0x3C) + task->data[0]++; + sub_80DFAB0(task); + break; + case 2: + if (++task->data[7] > 1) + { + task->data[7] = 0; + if (--task->data[6] == 0) + task->data[0]++; + } + sub_80DFAB0(task); + break; + case 3: + gUnknown_03004DC0.unk15 = 3; + task->data[0]++; + break; + case 4: + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80DFAB0(struct Task *task) +{ + u16 r3 = task->data[5]; + u16 i; + for (i = task->data[3]; i <= task->data[4]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2]; + r3 = (r3 + 8) & 0xFF; + } + task->data[5] = (task->data[5] + 9) & 0xFF; +} + +void sub_80DFB28(struct Sprite *sprite) +{ + int r6 = (gBattleAnimArgs[2] * 3) / 5; + int i; + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[4]; + sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]); + sprite->data[2] = Sin(gBattleAnimArgs[1], r6); + sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0]; + sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0]; + sprite->data[3] = gBattleAnimArgs[3]; + sprite->callback = sub_80DFBD8; + for (i = 0; i <= 6; i++) + gUnknown_03000730[i] = sprite->data[i]; +} + +void sub_80DFBD8(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[1]; + sprite->data[5] += sprite->data[2]; + sprite->pos2.x = sprite->data[4] / 10; + sprite->pos2.y = sprite->data[5] / 10; + if (++sprite->data[0] > sprite->data[3]) + DestroyAnimSprite(sprite); +} \ No newline at end of file -- cgit v1.2.3 From b5667bd097347c1d3958fa8f9eb6d39788c0ff50 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 23:20:32 -0600 Subject: refactor build system --- .travis.yml | 16 +- Makefile | 275 +++-- asm/battle_1.s | 2 +- asm/battle_9.s | 2 +- asm/battle_anim_812C144.s | 2 +- asm/battle_anim_813F0F4.s | 2 +- asm/battle_intro.s | 2 +- asm/contest_ai.s | 2 +- asm/contest_effect.s | 2 +- asm/contest_link_80C2020.s | 2 +- asm/contest_link_80C857C.s | 2 +- asm/crt0.s | 227 ---- asm/current.s | 2 +- asm/cute_sketch.s | 2 +- asm/dark.s | 2 +- asm/dragon.s | 2 +- asm/fight.s | 2 +- asm/flying.s | 2 +- asm/ghost.s | 2 +- asm/ground.s | 2 +- asm/ice.s | 2 +- asm/libagbsyscall.s | 91 -- asm/libgcnmultiboot.s | 641 ----------- asm/m4a_1.s | 1911 -------------------------------- asm/m4a_3.s | 2 +- asm/macros.inc | 149 --- asm/macros/asm.inc | 17 - asm/macros/battle_ai_script.inc | 554 --------- asm/macros/battle_anim.inc | 266 ----- asm/macros/battle_script.inc | 1414 ----------------------- asm/macros/contest_ai_script.inc | 506 --------- asm/macros/ec.inc | 8 - asm/macros/event.inc | 1481 ------------------------- asm/macros/field_effect_script.inc | 42 - asm/macros/function.inc | 29 - asm/macros/m4a.inc | 13 - asm/macros/map.inc | 96 -- asm/macros/movement.inc | 116 -- asm/macros/music_voice.inc | 125 --- asm/macros/pokemon_data.inc | 57 - asm/normal.s | 2 +- asm/pc_screen_effect.s | 2 +- asm/pokedex_area_screen.s | 2 +- asm/pokedex_cry_screen.s | 2 +- asm/pokemon_item_effect.s | 2 +- asm/pokemon_storage_system.s | 2 +- asm/pokenav.s | 2 +- asm/psychic.s | 2 +- asm/rock.s | 2 +- asm/unk_text_8095904.s | 2 +- asm/water.s | 2 +- config.mk | 44 + data-de/event_scripts.s | 4 +- data-de/strings2.s | 2 +- data/battle_ai_scripts.s | 4 +- data/battle_anim.s | 2 +- data/battle_anim_80A7E7C.s | 2 +- data/battle_anim_80CA710.s | 2 +- data/battle_anim_812C144.s | 2 +- data/battle_anim_813F0F4.s | 2 +- data/battle_anim_scripts.s | 4 +- data/battle_interface.s | 2 +- data/battle_moves.s | 2 +- data/battle_scripts_1.s | 4 +- data/battle_scripts_2.s | 4 +- data/contest.s | 2 +- data/contest_ai.s | 2 +- data/contest_ai_scripts.s | 4 +- data/contest_effect.s | 2 +- data/contest_link_80C2020.s | 2 +- data/cute_sketch.s | 2 +- data/data2a.s | 2 +- data/data2b.s | 2 +- data/data_8393054.s | 2 +- data/easy_chat.s | 2 +- data/event_scripts.s | 4 +- data/field_effect_scripts.s | 4 +- data/map_events.s | 2 +- data/maps.s | 2 +- data/pc_screen_effect.s | 2 +- data/pokedex_area_screen.s | 2 +- data/pokedex_cry_screen.s | 2 +- data/pokemon_storage_system.s | 2 +- data/pokenav.s | 2 +- data/roulette.s | 2 +- data/sound_data.s | 4 +- data/strings2.s | 2 +- data/tilesets.s | 2 +- fonts.mk | 2 - include/MPlayDef.s | 430 +++++++ include/macros.inc | 149 +++ include/macros/asm.inc | 17 + include/macros/battle_ai_script.inc | 554 +++++++++ include/macros/battle_anim.inc | 266 +++++ include/macros/battle_script.inc | 1414 +++++++++++++++++++++++ include/macros/contest_ai_script.inc | 506 +++++++++ include/macros/ec.inc | 8 + include/macros/event.inc | 1481 +++++++++++++++++++++++++ include/macros/field_effect_script.inc | 42 + include/macros/function.inc | 29 + include/macros/m4a.inc | 13 + include/macros/map.inc | 96 ++ include/macros/movement.inc | 116 ++ include/macros/music_voice.inc | 125 +++ include/macros/pokemon_data.inc | 57 + ld_script.txt | 8 +- misc.mk | 284 ++--- sound/MPlayDef.s | 430 ------- src/crt0.s | 227 ++++ src/libs/libagbsyscall.s | 91 ++ src/libs/libgcnmultiboot.s | 641 +++++++++++ src/libs/m4a_1.s | 1911 ++++++++++++++++++++++++++++++++ sym_bss.txt | 2 +- tilesets.mk | 216 +--- 114 files changed, 8641 insertions(+), 8702 deletions(-) delete mode 100644 asm/crt0.s delete mode 100644 asm/libagbsyscall.s delete mode 100644 asm/libgcnmultiboot.s delete mode 100644 asm/m4a_1.s delete mode 100644 asm/macros.inc delete mode 100644 asm/macros/asm.inc delete mode 100644 asm/macros/battle_ai_script.inc delete mode 100644 asm/macros/battle_anim.inc delete mode 100644 asm/macros/battle_script.inc delete mode 100644 asm/macros/contest_ai_script.inc delete mode 100644 asm/macros/ec.inc delete mode 100644 asm/macros/event.inc delete mode 100644 asm/macros/field_effect_script.inc delete mode 100644 asm/macros/function.inc delete mode 100644 asm/macros/m4a.inc delete mode 100644 asm/macros/map.inc delete mode 100644 asm/macros/movement.inc delete mode 100644 asm/macros/music_voice.inc delete mode 100644 asm/macros/pokemon_data.inc create mode 100644 config.mk create mode 100644 include/MPlayDef.s create mode 100644 include/macros.inc create mode 100644 include/macros/asm.inc create mode 100644 include/macros/battle_ai_script.inc create mode 100644 include/macros/battle_anim.inc create mode 100644 include/macros/battle_script.inc create mode 100644 include/macros/contest_ai_script.inc create mode 100644 include/macros/ec.inc create mode 100644 include/macros/event.inc create mode 100644 include/macros/field_effect_script.inc create mode 100644 include/macros/function.inc create mode 100644 include/macros/m4a.inc create mode 100644 include/macros/map.inc create mode 100644 include/macros/movement.inc create mode 100644 include/macros/music_voice.inc create mode 100644 include/macros/pokemon_data.inc delete mode 100644 sound/MPlayDef.s create mode 100644 src/crt0.s create mode 100644 src/libs/libagbsyscall.s create mode 100644 src/libs/libgcnmultiboot.s create mode 100644 src/libs/m4a_1.s diff --git a/.travis.yml b/.travis.yml index 04b2597b6..9a196819b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,12 +25,12 @@ matrix: env: _="Build" script: - ./build_tools.sh - - make -j2 compare_ruby - - make -j2 compare_ruby_rev1 - - make -j2 compare_ruby_rev2 - - make -j2 compare_sapphire - - make -j2 compare_sapphire_rev1 - - make -j2 compare_sapphire_rev2 + - make -j2 ruby + - make -j2 ruby_rev1 + - make -j2 ruby_rev2 + - make -j2 sapphire + - make -j2 sapphire_rev1 + - make -j2 sapphire_rev2 - os: linux env: _="Formatting" addons: @@ -53,7 +53,7 @@ matrix: - rsync -avhI graphics-de/ graphics/ script: - ./build_tools.sh - - make -j2 compare_ruby_de - - make -j2 compare_sapphire_de + - make -j2 ruby_de + - make -j2 sapphire_de allow_failures: - env: _="Formatting" diff --git a/Makefile b/Makefile index c1f6a6b4f..1fb17dc02 100644 --- a/Makefile +++ b/Makefile @@ -1,73 +1,149 @@ -SHELL := /bin/bash -o pipefail -AS := $(DEVKITARM)/bin/arm-none-eabi-as -ASFLAGS := -mcpu=arm7tdmi +include config.mk -CC1 := tools/agbcc/bin/agbcc -override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm -CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp -CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror -Wno-trigraphs +#### Tools #### -LD := $(DEVKITARM)/bin/arm-none-eabi-ld +SHELL := /bin/bash -o pipefail +AS := $(DEVKITARM)/bin/arm-none-eabi-as +CC1 := tools/agbcc/bin/agbcc +CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp +LD := $(DEVKITARM)/bin/arm-none-eabi-ld +OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy +SHA1SUM := sha1sum -c +GBAGFX := tools/gbagfx/gbagfx +RSFONT := tools/rsfont/rsfont +AIF2PCM := tools/aif2pcm/aif2pcm +MID2AGB := tools/mid2agb/mid2agb +PREPROC := tools/preproc/preproc +SCANINC := tools/scaninc/scaninc +RAMSCRGEN := tools/ramscrgen/ramscrgen -OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy +ASFLAGS := -mcpu=arm7tdmi -I include --defsym $(VERSION)=1 --defsym REVISION=$(REVISION) --defsym $(LANGUAGE)=1 +CC1FLAGS := -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm +CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror -Wno-trigraphs -D $(VERSION) -D REVISION=$(REVISION) -D $(LANGUAGE) + + +#### Files #### + +ROM := poke$(BUILD_NAME).gba +MAP := $(ROM:%.gba=%.map) + +SUBDIRS := \ + sound \ + sound/songs \ + asm \ + data \ + src \ + src/battle \ + src/battle/anim \ + src/field \ + src/debug \ + src/scene \ + src/pokemon \ + src/engine \ + src/libs +BUILD_DIR := build/$(BUILD_NAME) + +C_SOURCES := $(foreach dir, $(SUBDIRS), $(wildcard $(dir)/*.c)) +ASM_SOURCES := $(foreach dir, $(SUBDIRS), $(wildcard $(dir)/*.s)) + +C_OBECTS := $(addprefix $(BUILD_DIR)/, $(C_SOURCES:%.c=%.o)) +ASM_OBJECTS := $(addprefix $(BUILD_DIR)/, $(ASM_SOURCES:%.s=%.o)) +ALL_OBJECTS := $(C_OBJECTS) $(ASM_OBJECTS) -LIBGCC := tools/agbcc/lib/libgcc.a LIBC := tools/agbcc/lib/libc.a +LIBGCC := tools/agbcc/lib/libgcc.a -SHA1 := sha1sum -c +LD_SCRIPT := $(BUILD_DIR)/ld_script.ld -GFX := tools/gbagfx/gbagfx -AIF := tools/aif2pcm/aif2pcm -MID := tools/mid2agb/mid2agb -SCANINC := tools/scaninc/scaninc -PREPROC := tools/preproc/preproc -RAMSCRGEN := tools/ramscrgen/ramscrgen +# Special configurations required for lib files +%src/libs/siirtc.o: CC1FLAGS := -mthumb-interwork +%src/libs/agb_flash.o: CC1FLAGS := -O1 -mthumb-interwork +%src/libs/agb_flash_1m.o: CC1FLAGS := -O1 -mthumb-interwork +%src/libs/agb_flash_mx.o: CC1FLAGS := -O1 -mthumb-interwork +%src/libs/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc +%src/libs/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc -REVISION := 0 -VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_de sapphire_de +#### Main Rules #### -# Clear the default suffixes. -.SUFFIXES: +# Disable dependency scanning when NODEP is used for quick building +ifeq ($(NODEP),) + $(BUILD_DIR)/src/%.o: C_FILE = $(*D)/$(*F).c + $(BUILD_DIR)/src/%.o: C_DEP = $(shell $(SCANINC) -I include $(wildcard $(C_FILE:$(BUILD_DIR)/=))) + $(BUILD_DIR)/asm/%.o: ASM_DEP = $(shell $(SCANINC) asm/$(*F).s) + $(BUILD_DIR)/data/%.o: ASM_DEP = $(shell $(SCANINC) data/$(*F).s) +endif # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: +# Clear the default suffixes +.SUFFIXES: + +# Don't delete intermediate files .PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl %.pcm %.bin sound/direct_sound_samples/cry_%.bin -.PHONY: all clean tidy all_versions compare compare_all \ -$(VERSIONS) $(VERSIONS:%=compare_%) +# Create build subdirectories +$(shell mkdir -p $(addprefix $(BUILD_DIR)/, $(SUBDIRS))) + +all: $(ROM) +ifeq ($(COMPARE),1) + @$(SHA1SUM) $(BUILD_NAME).sha1 +endif + +clean: tidy + $(RM) sound/direct_sound_samples/*.bin + $(RM) $(ALL_OBJECTS) + find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' \) -exec rm {} + +tidy: + $(RM) poke$(BUILD_NAME){.gba,.elf,.map} + $(RM) -r build -$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,asm,data,src{,/battle{,/anim},/field,/debug,/scene,/pokemon,/engine,/libs}})) +%.gba: %.elf + $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ -C_SRCS := $(shell find src -iname "*.c") -ASM_SRCS := $(wildcard asm/*.s) -DATA_ASM_SRCS := $(wildcard data/*.s) +%.elf: $(LD_SCRIPT) $(ALL_OBJECTS) + cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) -o ../../$@ ../../$(LIBGCC) ../../$(LIBC) -SONG_SRCS := $(wildcard sound/songs/*.s) -SONG_OBJS := $(SONG_SRCS:%.s=%.o) +$(LD_SCRIPT): $(BUILD_DIR)/sym_bss.ld $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sym_ewram.ld + cd $(BUILD_DIR) && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" >ld_script.ld +$(BUILD_DIR)/sym_bss.ld: sym_bss.txt + cd $(BUILD_DIR) && ../../$(RAMSCRGEN) .bss ../../sym_bss.txt $(LANGUAGE) >sym_bss.ld +$(BUILD_DIR)/sym_common.ld: sym_common.txt $(C_OBECTS) $(wildcard common_syms/*.txt) + cd $(BUILD_DIR) && ../../$(RAMSCRGEN) COMMON ../../sym_common.txt $(LANGUAGE) -c src,../../common_syms >sym_common.ld +$(BUILD_DIR)/sym_ewram.ld: sym_ewram.txt + cd $(BUILD_DIR) && ../../$(RAMSCRGEN) ewram_data ../../sym_ewram.txt $(LANGUAGE) >sym_ewram.ld -all: ruby - @: +$(BUILD_DIR)/%.o: %.c $$(C_DEP) + $(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i + $(PREPROC) $(BUILD_DIR)/$*.i charmap.txt | $(CC1) $(CC1FLAGS) -o $(BUILD_DIR)/$*.s + @printf ".text\n\t.align\t2, 0\n" >> $(BUILD_DIR)/$*.s + @$(AS) $(ASFLAGS) -o $@ $(BUILD_DIR)/$*.s -all_versions: $(VERSIONS) - @: +# Only .s files in data need preproc +$(BUILD_DIR)/data/%.o: data/%.s $$(ASM_DEP) + $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ -# For contributors to make sure a change didn't affect the contents of the ROM. -compare: compare_ruby -compare_all: $(VERSIONS:%=compare_%) +$(BUILD_DIR)/%.o: %.s $$(ASM_DEP) + $(AS) $(ASFLAGS) $< -o $@ -clean: tidy - rm -f sound/direct_sound_samples/*.bin - rm -f $(SONG_OBJS) - find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' \) -exec rm {} + +# "friendly" target names for convenience sake +ruby: ; @$(MAKE) --no-print-directory VERSION=RUBY +ruby_rev1: ; @$(MAKE) --no-print-directory VERSION=RUBY REVISION=1 +ruby_rev2: ; @$(MAKE) --no-print-directory VERSION=RUBY REVISION=2 +sapphire: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE +sapphire_rev1: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE REVISION=1 +sapphire_rev2: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE REVISION=1 +ruby_de: ; @$(MAKE) --no-print-directory VERSION=RUBY LANGUAGE=GERMAN +sapphire_de: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE LANGUAGE=GERMAN -tidy: - rm -f $(VERSIONS:%=poke%{.gba,.elf,.map}) - rm -r build/* + +#### Graphics Rules #### + +GFX_OPTS := include castform.mk include tilesets.mk @@ -75,107 +151,22 @@ include fonts.mk include misc.mk include override.mk -%.s: ; -%.png: ; -%.pal: ; -%.aif: ; - -%.1bpp: %.png ; $(GFX) $< $@ -%.4bpp: %.png ; $(GFX) $< $@ -%.8bpp: %.png ; $(GFX) $< $@ -%.gbapal: %.pal ; $(GFX) $< $@ -%.gbapal: %.png ; $(GFX) $< $@ -%.lz: % ; $(GFX) $< $@ -%.rl: % ; $(GFX) $< $@ -sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(AIF) $< $@ --compress -%.bin: %.aif ; $(AIF) $< $@ -sound/songs/%.s: sound/songs/%.mid - cd $(@D) && ../../$(MID) $(> build/$1/$$*.s - $$(AS) $$(ASFLAGS) -o $$@ build/$1/$$*.s - -$$($1_ASM_OBJS): VERSION := $2 -$$($1_ASM_OBJS): REVISION := $3 -$$($1_ASM_OBJS): LANGUAGE := $4 -build/$1/asm/%.o: asm/%.s $$$$(asm_dep) - $$(AS) $$(ASFLAGS) --defsym $$(VERSION)=1 --defsym REVISION=$$(REVISION) --defsym $$(LANGUAGE)=1 -o $$@ $$< - -$$($1_DATA_ASM_OBJS): VERSION := $2 -$$($1_DATA_ASM_OBJS): REVISION := $3 -$$($1_DATA_ASM_OBJS): LANGUAGE := $4 -build/$1/data/%.o: data/%.s $$$$(asm_dep) - $$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) --defsym $$(VERSION)=1 --defsym REVISION=$$(REVISION) --defsym $$(LANGUAGE)=1 -o $$@ - -build/$1/sym_bss.ld: LANGUAGE := $4 -build/$1/sym_bss.ld: sym_bss.txt - cd build/$1 && ../../$$(RAMSCRGEN) .bss ../../sym_bss.txt $$(LANGUAGE) >sym_bss.ld - -build/$1/sym_common.ld: LANGUAGE := $4 -build/$1/sym_common.ld: sym_common.txt $$($1_C_OBJS) $$(wildcard common_syms/*.txt) - cd build/$1 && ../../$$(RAMSCRGEN) COMMON ../../sym_common.txt $$(LANGUAGE) -c src,../../common_syms >sym_common.ld - -build/$1/sym_ewram.ld: LANGUAGE := $4 -build/$1/sym_ewram.ld: sym_ewram.txt - cd build/$1 && ../../$$(RAMSCRGEN) ewram_data ../../sym_ewram.txt $$(LANGUAGE) >sym_ewram.ld - -build/$1/ld_script.ld: ld_script.txt build/$1/sym_bss.ld build/$1/sym_common.ld build/$1/sym_ewram.ld - cd build/$1 && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" >ld_script.ld - -poke$1.elf: build/$1/ld_script.ld $$($1_OBJS) - cd build/$1 && $$(LD) -T ld_script.ld -Map ../../poke$1.map -o ../../$$@ $$($1_OBJS_REL) ../../$$(LIBGCC) ../../$$(LIBC) - -poke$1.gba: %.gba: %.elf - $$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $$< $$@ - -compare_$1: poke$1.gba - @$$(SHA1) $1.sha1 - -$1: poke$1.gba - @: -endef - -$(eval $(call VERSION_RULES,ruby,RUBY,0,ENGLISH)) -$(eval $(call VERSION_RULES,ruby_rev1,RUBY,1,ENGLISH)) -$(eval $(call VERSION_RULES,ruby_rev2,RUBY,2,ENGLISH)) -$(eval $(call VERSION_RULES,sapphire,SAPPHIRE,0,ENGLISH)) -$(eval $(call VERSION_RULES,sapphire_rev1,SAPPHIRE,1,ENGLISH)) -$(eval $(call VERSION_RULES,sapphire_rev2,SAPPHIRE,2,ENGLISH)) -$(eval $(call VERSION_RULES,ruby_de,RUBY,0,GERMAN)) -$(eval $(call VERSION_RULES,sapphire_de,SAPPHIRE,0,GERMAN)) +sound/songs/%.s: sound/songs/%.mid + cd $(@D) && ../../$(MID2AGB) $(= 0x2000000 (i.e. not in BIOS ROM), accept it - ldr r0, lt_MPlayJumpTableTemplate - cmp r2, r0 - blo chk_adr_r2_reject @ if adr < gMPlayJumpTableTemplate, reject it - lsrs r0, r2, 14 - beq chk_adr_r2_done @ if adr < 0x40000 (i.e. in BIOS ROM), accept it -chk_adr_r2_reject: - movs r3, 0 -chk_adr_r2_done: - pop {r0} - bx lr - - .align 2, 0 -lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate - - thumb_func_start ld_r3_tp_adr_i -ld_r3_tp_adr_i: - ldr r2, [r1, 0x40] -_081DD64A: - adds r3, r2, 0x1 - str r3, [r1, 0x40] - ldrb r3, [r2] - b chk_adr_r2 - thumb_func_end ld_r3_tp_adr_i - - thumb_func_start ply_goto -ply_goto: - push {lr} -ply_goto_1: - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] - ldrb r0, [r2, 0x3] - lsls r0, 8 - ldrb r3, [r2, 0x2] - orrs r0, r3 - lsls r0, 8 - ldrb r3, [r2, 0x1] - orrs r0, r3 - lsls r0, 8 - bl ldrb_r3_r2 - orrs r0, r3 - str r0, [r1, o_MusicPlayerTrack_cmdPtr] - pop {r0} - bx r0 - thumb_func_end ply_goto - - thumb_func_start ply_patt -ply_patt: - ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] - cmp r2, 3 - bhs ply_patt_done - lsls r2, 2 - adds r3, r1, r2 - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] - adds r2, 0x4 - str r2, [r3, o_MusicPlayerTrack_patternStack] - ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] - adds r2, 1 - strb r2, [r1, o_MusicPlayerTrack_patternLevel] - b ply_goto -ply_patt_done: - b ply_fine - thumb_func_end ply_patt - - thumb_func_start ply_pend -ply_pend: - ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] - cmp r2, 0 - beq ply_pend_done - subs r2, 1 - strb r2, [r1, o_MusicPlayerTrack_patternLevel] - lsls r2, 2 - adds r3, r1, r2 - ldr r2, [r3, o_MusicPlayerTrack_patternStack] - str r2, [r1, o_MusicPlayerTrack_cmdPtr] -ply_pend_done: - bx lr - thumb_func_end ply_pend - - thumb_func_start ply_rept -ply_rept: - push {lr} - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] - ldrb r3, [r2] - cmp r3, 0 - bne ply_rept_1 - adds r2, 1 - str r2, [r1, o_MusicPlayerTrack_cmdPtr] - b ply_goto_1 -ply_rept_1: - ldrb r3, [r1, o_MusicPlayerTrack_repN] - adds r3, 1 - strb r3, [r1, o_MusicPlayerTrack_repN] - mov r12, r3 - bl ld_r3_tp_adr_i - cmp r12, r3 - bhs ply_rept_2 - b ply_goto_1 -ply_rept_2: - movs r3, 0 - strb r3, [r1, o_MusicPlayerTrack_repN] - adds r2, 5 - str r2, [r1, o_MusicPlayerTrack_cmdPtr] - pop {r0} - bx r0 - thumb_func_end ply_rept - - thumb_func_start ply_prio -ply_prio: - mov r12, lr - bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_priority] - bx r12 - thumb_func_end ply_prio - - thumb_func_start ply_tempo -ply_tempo: - mov r12, lr - bl ld_r3_tp_adr_i - lsls r3, 1 - strh r3, [r0, o_MusicPlayerInfo_tempoD] - ldrh r2, [r0, o_MusicPlayerInfo_tempoU] - muls r3, r2 - lsrs r3, 8 - strh r3, [r0, o_MusicPlayerInfo_tempoI] - bx r12 - thumb_func_end ply_tempo - - thumb_func_start ply_keysh -ply_keysh: - mov r12, lr - bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_keyShift] - ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xC - orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] - bx r12 - thumb_func_end ply_keysh - - thumb_func_start ply_voice -ply_voice: - mov r12, lr - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] - ldrb r3, [r2] - adds r2, 1 - str r2, [r1, o_MusicPlayerTrack_cmdPtr] - lsls r2, r3, 1 - adds r2, r3 - lsls r2, 2 - ldr r3, [r0, o_MusicPlayerInfo_tone] - adds r2, r3 - ldr r3, [r2] - bl chk_adr_r2 - str r3, [r1, o_MusicPlayerTrack_ToneData_type] - ldr r3, [r2, 0x4] - bl chk_adr_r2 - str r3, [r1, o_MusicPlayerTrack_ToneData_wav] - ldr r3, [r2, 0x8] - bl chk_adr_r2 - str r3, [r1, o_MusicPlayerTrack_ToneData_attack] - bx r12 - thumb_func_end ply_voice - - thumb_func_start ply_vol -ply_vol: - mov r12, lr - bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_vol] - ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0x3 - orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] - bx r12 - thumb_func_end ply_vol - - thumb_func_start ply_pan -ply_pan: - mov r12, lr - bl ld_r3_tp_adr_i - subs r3, 0x40 - strb r3, [r1, o_MusicPlayerTrack_pan] - ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0x3 - orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] - bx r12 - thumb_func_end ply_pan - - thumb_func_start ply_bend -ply_bend: - mov r12, lr - bl ld_r3_tp_adr_i - subs r3, 0x40 - strb r3, [r1, o_MusicPlayerTrack_bend] - ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xC - orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] - bx r12 - thumb_func_end ply_bend - - thumb_func_start ply_bendr -ply_bendr: - mov r12, lr - bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_bendRange] - ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xC - orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] - bx r12 - thumb_func_end ply_bendr - - thumb_func_start ply_lfodl -ply_lfodl: - mov r12, lr - bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_lfoDelay] - bx r12 - thumb_func_end ply_lfodl - - thumb_func_start ply_modt -ply_modt: - mov r12, lr - bl ld_r3_tp_adr_i - ldrb r0, [r1, o_MusicPlayerTrack_modT] - cmp r0, r3 - beq _081DD7AA - strb r3, [r1, o_MusicPlayerTrack_modT] - ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xF - orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] -_081DD7AA: - bx r12 - thumb_func_end ply_modt - - thumb_func_start ply_tune -ply_tune: - mov r12, lr - bl ld_r3_tp_adr_i - subs r3, 0x40 - strb r3, [r1, o_MusicPlayerTrack_tune] - ldrb r3, [r1, o_MusicPlayerTrack_flags] - movs r2, 0xC - orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] - bx r12 - thumb_func_end ply_tune - - thumb_func_start ply_port -ply_port: - mov r12, lr - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] - ldrb r3, [r2] - adds r2, 1 - ldr r0, =REG_SOUND1CNT_L @ sound register base address - adds r0, r3 - bl _081DD64A - strb r3, [r0] - bx r12 - .pool - thumb_func_end ply_port - - thumb_func_start m4aSoundVSync -m4aSoundVSync: - ldr r0, lt2_SOUND_INFO_PTR - ldr r0, [r0] - - @ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1. - ldr r2, lt2_ID_NUMBER - ldr r3, [r0, o_SoundInfo_ident] - subs r3, r2 - cmp r3, 1 - bhi m4aSoundVSync_Done - - @ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA. - ldrb r1, [r0, o_SoundInfo_pcmDmaCounter] - subs r1, 1 - strb r1, [r0, o_SoundInfo_pcmDmaCounter] - bgt m4aSoundVSync_Done - - @ Reload the PCM DMA counter. - ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] - strb r1, [r0, o_SoundInfo_pcmDmaCounter] - - ldr r2, =REG_DMA1 - - ldr r1, [r2, 0x8] @ DMA1CNT - lsls r1, 7 - bcc m4aSoundVSync_SkipDMA1 @ branch if repeat bit isn't set - - ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 - str r1, [r2, 0x8] @ DMA1CNT - -m4aSoundVSync_SkipDMA1: - ldr r1, [r2, 0xC + 0x8] @ DMA2CNT - lsls r1, 7 - bcc m4aSoundVSync_SkipDMA2 @ branch if repeat bit isn't set - - ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 - str r1, [r2, 0xC + 0x8] @ DMA2CNT - -m4aSoundVSync_SkipDMA2: - - @ turn off DMA1/DMA2 - movs r1, DMA_32BIT >> 8 - lsls r1, 8 - strh r1, [r2, 0xA] @ DMA1CNT_H - strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H - - @ turn on DMA1/DMA2 direct-sound FIFO mode - movs r1, (DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT) >> 8 - lsls r1, 8 @ LSB is 0, so DMA_SRC_INC is used (destination is always fixed in FIFO mode) - strh r1, [r2, 0xA] @ DMA1CNT_H - strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H - -m4aSoundVSync_Done: - bx lr - - .pool - thumb_func_end m4aSoundVSync - - thumb_func_start MPlayMain -MPlayMain: - ldr r2, lt2_ID_NUMBER - ldr r3, [r0, o_MusicPlayerInfo_ident] - cmp r2, r3 - beq _081DD82E - bx lr -_081DD82E: - adds r3, 0x1 - str r3, [r0, o_MusicPlayerInfo_ident] - push {r0,lr} - ldr r3, [r0, o_MusicPlayerInfo_func] - cmp r3, 0 - beq _081DD840 - ldr r0, [r0, o_MusicPlayerInfo_intp] - bl call_r3 -_081DD840: - pop {r0} - push {r4-r7} - mov r4, r8 - mov r5, r9 - mov r6, r10 - mov r7, r11 - push {r4-r7} - adds r7, r0, 0 - ldr r0, [r7, o_MusicPlayerInfo_status] - cmp r0, 0 - bge _081DD858 - b _081DDA6C -_081DD858: - ldr r0, lt2_SOUND_INFO_PTR - ldr r0, [r0] - mov r8, r0 - adds r0, r7, 0 - bl FadeOutBody - ldr r0, [r7, o_MusicPlayerInfo_status] - cmp r0, 0 - bge _081DD86C - b _081DDA6C -_081DD86C: - ldrh r0, [r7, o_MusicPlayerInfo_tempoC] - ldrh r1, [r7, o_MusicPlayerInfo_tempoI] - adds r0, r1 - b _081DD9BC -_081DD874: - ldrb r6, [r7, o_MusicPlayerInfo_trackCount] - ldr r5, [r7, o_MusicPlayerInfo_tracks] - movs r3, 0x1 - movs r4, 0 -_081DD87C: - ldrb r0, [r5] - movs r1, 0x80 - tst r1, r0 - bne _081DD886 - b _081DD998 -_081DD886: - mov r10, r3 - orrs r4, r3 - mov r11, r4 - ldr r4, [r5, o_MusicPlayerTrack_chan] - cmp r4, 0 - beq _081DD8BA -_081DD892: - ldrb r1, [r4] - movs r0, 0xC7 - tst r0, r1 - beq _081DD8AE - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _081DD8B4 - subs r0, 0x1 - strb r0, [r4, 0x10] - bne _081DD8B4 - movs r0, 0x40 - orrs r1, r0 - strb r1, [r4] - b _081DD8B4 -_081DD8AE: - adds r0, r4, 0 - bl ClearChain -_081DD8B4: - ldr r4, [r4, 0x34] - cmp r4, 0 - bne _081DD892 -_081DD8BA: - ldrb r3, [r5, o_MusicPlayerTrack_flags] - movs r0, 0x40 - tst r0, r3 - beq _081DD938 - adds r0, r5, 0 - bl Clear64byte - movs r0, 0x80 - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, o_MusicPlayerTrack_bendRange] - movs r0, 0x40 - strb r0, [r5, o_MusicPlayerTrack_volX] - movs r0, 0x16 - strb r0, [r5, o_MusicPlayerTrack_lfoSpeed] - movs r0, 0x1 - adds r1, r5, 0x6 - strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6] - b _081DD938 -_081DD8E0: - ldr r2, [r5, o_MusicPlayerTrack_cmdPtr] - ldrb r1, [r2] - cmp r1, 0x80 - bhs _081DD8EC - ldrb r1, [r5, o_MusicPlayerTrack_runningStatus] - b _081DD8F6 -_081DD8EC: - adds r2, 0x1 - str r2, [r5, o_MusicPlayerTrack_cmdPtr] - cmp r1, 0xBD - bcc _081DD8F6 - strb r1, [r5, o_MusicPlayerTrack_runningStatus] -_081DD8F6: - cmp r1, 0xCF - bcc _081DD90C - mov r0, r8 - ldr r3, [r0, o_SoundInfo_plynote] - adds r0, r1, 0 - subs r0, 0xCF - adds r1, r7, 0 - adds r2, r5, 0 - bl call_r3 - b _081DD938 -_081DD90C: - cmp r1, 0xB0 - bls _081DD92E - adds r0, r1, 0 - subs r0, 0xB1 - strb r0, [r7, o_MusicPlayerInfo_cmd] - mov r3, r8 - ldr r3, [r3, o_SoundInfo_MPlayJumpTable] - lsls r0, 2 - ldr r3, [r3, r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl call_r3 - ldrb r0, [r5, o_MusicPlayerTrack_flags] - cmp r0, 0 - beq _081DD994 - b _081DD938 -_081DD92E: - ldr r0, lt_gClockTable - subs r1, 0x80 - adds r1, r0 - ldrb r0, [r1] - strb r0, [r5, o_MusicPlayerTrack_wait] -_081DD938: - ldrb r0, [r5, o_MusicPlayerTrack_wait] - cmp r0, 0 - beq _081DD8E0 - subs r0, 0x1 - strb r0, [r5, o_MusicPlayerTrack_wait] - ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed] - cmp r1, 0 - beq _081DD994 - ldrb r0, [r5, o_MusicPlayerTrack_mod] - cmp r0, 0 - beq _081DD994 - ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC] - cmp r0, 0 - beq _081DD95A - subs r0, 0x1 - strb r0, [r5, o_MusicPlayerTrack_lfoDelayC] - b _081DD994 -_081DD95A: - ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] - adds r0, r1 - strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] - adds r1, r0, 0 - subs r0, 0x40 - lsls r0, 24 - bpl _081DD96E - lsls r2, r1, 24 - asrs r2, 24 - b _081DD972 -_081DD96E: - movs r0, 0x80 - subs r2, r0, r1 -_081DD972: - ldrb r0, [r5, o_MusicPlayerTrack_mod] - muls r0, r2 - asrs r2, r0, 6 - ldrb r0, [r5, o_MusicPlayerTrack_modM] - eors r0, r2 - lsls r0, 24 - beq _081DD994 - strb r2, [r5, o_MusicPlayerTrack_modM] - ldrb r0, [r5] - ldrb r1, [r5, o_MusicPlayerTrack_modT] - cmp r1, 0 - bne _081DD98E - movs r1, 0xC - b _081DD990 -_081DD98E: - movs r1, 0x3 -_081DD990: - orrs r0, r1 - strb r0, [r5, o_MusicPlayerTrack_flags] -_081DD994: - mov r3, r10 - mov r4, r11 -_081DD998: - subs r6, 0x1 - ble _081DD9A4 - movs r0, 0x50 - adds r5, r0 - lsls r3, 1 - b _081DD87C -_081DD9A4: - ldr r0, [r7, o_MusicPlayerInfo_clock] - adds r0, 0x1 - str r0, [r7, o_MusicPlayerInfo_clock] - cmp r4, 0 - bne _081DD9B6 - movs r0, 0x80 - lsls r0, 24 - str r0, [r7, o_MusicPlayerInfo_status] - b _081DDA6C -_081DD9B6: - str r4, [r7, o_MusicPlayerInfo_status] - ldrh r0, [r7, o_MusicPlayerInfo_tempoC] - subs r0, 0x96 -_081DD9BC: - strh r0, [r7, o_MusicPlayerInfo_tempoC] - cmp r0, 0x96 - bcc _081DD9C4 - b _081DD874 -_081DD9C4: - ldrb r2, [r7, o_MusicPlayerInfo_trackCount] - ldr r5, [r7, o_MusicPlayerInfo_tracks] -_081DD9C8: - ldrb r0, [r5, o_MusicPlayerTrack_flags] - movs r1, 0x80 - tst r1, r0 - beq _081DDA62 - movs r1, 0xF - tst r1, r0 - beq _081DDA62 - mov r9, r2 - adds r0, r7, 0 - adds r1, r5, 0 - bl TrkVolPitSet - ldr r4, [r5, o_MusicPlayerTrack_chan] - cmp r4, 0 - beq _081DDA58 -_081DD9E6: - ldrb r1, [r4, o_SoundChannel_status] - movs r0, 0xC7 - tst r0, r1 - bne _081DD9F6 - adds r0, r4, 0 - bl ClearChain - b _081DDA52 -_081DD9F6: - ldrb r0, [r4, o_SoundChannel_type] - movs r6, 0x7 - ands r6, r0 - ldrb r3, [r5, o_MusicPlayerTrack_flags] - movs r0, 0x3 - tst r0, r3 - beq _081DDA14 - bl ChnVolSetAsm - cmp r6, 0 - beq _081DDA14 - ldrb r0, [r4, o_CgbChannel_mo] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, o_CgbChannel_mo] -_081DDA14: - ldrb r3, [r5, o_MusicPlayerTrack_flags] - movs r0, 0xC - tst r0, r3 - beq _081DDA52 - ldrb r1, [r4, o_SoundChannel_ky] - movs r0, 0x8 - ldrsb r0, [r5, r0] - adds r2, r1, r0 - bpl _081DDA28 - movs r2, 0 -_081DDA28: - cmp r6, 0 - beq _081DDA46 - mov r0, r8 - ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq] - adds r1, r2, 0 - ldrb r2, [r5, o_MusicPlayerTrack_pitM] - adds r0, r6, 0 - bl call_r3 - str r0, [r4, o_CgbChannel_fr] - ldrb r0, [r4, o_CgbChannel_mo] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4, o_CgbChannel_mo] - b _081DDA52 -_081DDA46: - adds r1, r2, 0 - ldrb r2, [r5, o_MusicPlayerTrack_pitM] - ldr r0, [r4, o_SoundChannel_wav] - bl MidiKeyToFreq - str r0, [r4, o_SoundChannel_freq] -_081DDA52: - ldr r4, [r4, o_SoundChannel_np] - cmp r4, 0 - bne _081DD9E6 -_081DDA58: - ldrb r0, [r5, o_MusicPlayerTrack_flags] - movs r1, 0xF0 - ands r0, r1 - strb r0, [r5, o_MusicPlayerTrack_flags] - mov r2, r9 -_081DDA62: - subs r2, 0x1 - ble _081DDA6C - movs r0, 0x50 - adds r5, r0 - bgt _081DD9C8 -_081DDA6C: - ldr r0, lt2_ID_NUMBER - str r0, [r7, o_MusicPlayerInfo_ident] - pop {r0-r7} - mov r8, r0 - mov r9, r1 - mov r10, r2 - mov r11, r3 - pop {r3} - -call_r3: - bx r3 - - .align 2, 0 -lt_gClockTable: .word gClockTable -lt2_SOUND_INFO_PTR: .word SOUND_INFO_PTR -lt2_ID_NUMBER: .word ID_NUMBER - thumb_func_end MPlayMain - - thumb_func_start TrackStop -TrackStop: - push {r4-r6,lr} - adds r5, r1, 0 - ldrb r1, [r5, o_MusicPlayerTrack_flags] - movs r0, 0x80 - tst r0, r1 - beq TrackStop_Done - ldr r4, [r5, o_MusicPlayerTrack_chan] - cmp r4, 0 - beq TrackStop_3 - movs r6, 0 -TrackStop_Loop: - ldrb r0, [r4, o_SoundChannel_status] - cmp r0, 0 - beq TrackStop_2 - ldrb r0, [r4, o_SoundChannel_type] - movs r3, 0x7 - ands r0, r3 - beq TrackStop_1 - ldr r3, =SOUND_INFO_PTR - ldr r3, [r3] - ldr r3, [r3, o_SoundInfo_CgbOscOff] - bl call_r3 -TrackStop_1: - strb r6, [r4, o_SoundChannel_status] -TrackStop_2: - str r6, [r4, o_SoundChannel_track] - ldr r4, [r4, o_SoundChannel_np] - cmp r4, 0 - bne TrackStop_Loop -TrackStop_3: - str r4, [r5, o_MusicPlayerTrack_chan] -TrackStop_Done: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end TrackStop - - thumb_func_start ChnVolSetAsm -ChnVolSetAsm: - ldrb r1, [r4, 0x12] - movs r0, 0x14 - ldrsb r2, [r4, r0] - movs r3, 0x80 - adds r3, r2 - muls r3, r1 - ldrb r0, [r5, 0x10] - muls r0, r3 - asrs r0, 14 - cmp r0, 0xFF - bls _081DDAE8 - movs r0, 0xFF -_081DDAE8: - strb r0, [r4, 0x2] - movs r3, 0x7F - subs r3, r2 - muls r3, r1 - ldrb r0, [r5, 0x11] - muls r0, r3 - asrs r0, 14 - cmp r0, 0xFF - bls _081DDAFC - movs r0, 0xFF -_081DDAFC: - strb r0, [r4, 0x3] - bx lr - thumb_func_end ChnVolSetAsm - - thumb_func_start ply_note -ply_note: - push {r4-r7,lr} - mov r4, r8 - mov r5, r9 - mov r6, r10 - mov r7, r11 - push {r4-r7} - sub sp, 0x18 - str r1, [sp] - adds r5, r2, 0 - ldr r1, =SOUND_INFO_PTR - ldr r1, [r1] - str r1, [sp, 0x4] - ldr r1, =gClockTable - adds r0, r1 - ldrb r0, [r0] - strb r0, [r5, o_MusicPlayerTrack_gateTime] - ldr r3, [r5, o_MusicPlayerTrack_cmdPtr] - ldrb r0, [r3] - cmp r0, 0x80 - bhs _081DDB46 - strb r0, [r5, o_MusicPlayerTrack_key] - adds r3, 0x1 - ldrb r0, [r3] - cmp r0, 0x80 - bhs _081DDB44 - strb r0, [r5, o_MusicPlayerTrack_velocity] - adds r3, 0x1 - ldrb r0, [r3] - cmp r0, 0x80 - bhs _081DDB44 - ldrb r1, [r5, o_MusicPlayerTrack_gateTime] - adds r1, r0 - strb r1, [r5, o_MusicPlayerTrack_gateTime] - adds r3, 0x1 -_081DDB44: - str r3, [r5, o_MusicPlayerTrack_cmdPtr] -_081DDB46: - movs r0, 0 - str r0, [sp, 0x14] - adds r4, r5, 0 - adds r4, o_MusicPlayerTrack_ToneData_type - ldrb r2, [r4] - movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL - tst r0, r2 - beq _081DDB98 - ldrb r3, [r5, o_MusicPlayerTrack_key] - movs r0, TONEDATA_TYPE_SPL - tst r0, r2 - beq _081DDB66 - ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable] - adds r1, r3 - ldrb r0, [r1] - b _081DDB68 -_081DDB66: - adds r0, r3, 0 -_081DDB68: - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav] - adds r1, r0 - mov r9, r1 - mov r6, r9 - ldrb r1, [r6] - movs r0, 0xC0 - tst r0, r1 - beq _081DDB80 - b _081DDCEA -_081DDB80: - movs r0, 0x80 - tst r0, r2 - beq _081DDB9C - ldrb r1, [r6, 0x3] - movs r0, 0x80 - tst r0, r1 - beq _081DDB94 - subs r1, 0xC0 - lsls r1, 1 - str r1, [sp, 0x14] -_081DDB94: - ldrb r3, [r6, 0x1] - b _081DDB9C -_081DDB98: - mov r9, r4 - ldrb r3, [r5, 0x5] -_081DDB9C: - str r3, [sp, 0x8] - ldr r6, [sp] - ldrb r1, [r6, 0x9] - ldrb r0, [r5, 0x1D] - adds r0, r1 - cmp r0, 0xFF - bls _081DDBAC - movs r0, 0xFF -_081DDBAC: - str r0, [sp, 0x10] - mov r6, r9 - ldrb r0, [r6] - movs r6, 0x7 - ands r6, r0 - str r6, [sp, 0xC] - beq _081DDBEC - ldr r0, [sp, 0x4] - ldr r4, [r0, 0x1C] - cmp r4, 0 - bne _081DDBC4 - b _081DDCEA -_081DDBC4: - subs r6, 0x1 - lsls r0, r6, 6 - adds r4, r0 - ldrb r1, [r4] - movs r0, 0xC7 - tst r0, r1 - beq _081DDC40 - movs r0, 0x40 - tst r0, r1 - bne _081DDC40 - ldrb r1, [r4, 0x13] - ldr r0, [sp, 0x10] - cmp r1, r0 - bcc _081DDC40 - beq _081DDBE4 - b _081DDCEA -_081DDBE4: - ldr r0, [r4, 0x2C] - cmp r0, r5 - bcs _081DDC40 - b _081DDCEA -_081DDBEC: - ldr r6, [sp, 0x10] - adds r7, r5, 0 - movs r2, 0 - mov r8, r2 - ldr r4, [sp, 0x4] - ldrb r3, [r4, 0x6] - adds r4, 0x50 -_081DDBFA: - ldrb r1, [r4] - movs r0, 0xC7 - tst r0, r1 - beq _081DDC40 - movs r0, 0x40 - tst r0, r1 - beq _081DDC14 - cmp r2, 0 - bne _081DDC18 - adds r2, 0x1 - ldrb r6, [r4, 0x13] - ldr r7, [r4, 0x2C] - b _081DDC32 -_081DDC14: - cmp r2, 0 - bne _081DDC34 -_081DDC18: - ldrb r0, [r4, 0x13] - cmp r0, r6 - bcs _081DDC24 - adds r6, r0, 0 - ldr r7, [r4, 0x2C] - b _081DDC32 -_081DDC24: - bhi _081DDC34 - ldr r0, [r4, 0x2C] - cmp r0, r7 - bls _081DDC30 - adds r7, r0, 0 - b _081DDC32 -_081DDC30: - bcc _081DDC34 -_081DDC32: - mov r8, r4 -_081DDC34: - adds r4, 0x40 - subs r3, 0x1 - bgt _081DDBFA - mov r4, r8 - cmp r4, 0 - beq _081DDCEA -_081DDC40: - adds r0, r4, 0 - bl ClearChain - movs r1, 0 - str r1, [r4, 0x30] - ldr r3, [r5, 0x20] - str r3, [r4, 0x34] - cmp r3, 0 - beq _081DDC54 - str r4, [r3, 0x30] -_081DDC54: - str r4, [r5, 0x20] - str r5, [r4, 0x2C] - ldrb r0, [r5, 0x1B] - strb r0, [r5, 0x1C] - cmp r0, r1 - beq _081DDC66 - adds r1, r5, 0 - bl clear_modM -_081DDC66: - ldr r0, [sp] - adds r1, r5, 0 - bl TrkVolPitSet - ldr r0, [r5, 0x4] - str r0, [r4, 0x10] - ldr r0, [sp, 0x10] - strb r0, [r4, 0x13] - ldr r0, [sp, 0x8] - strb r0, [r4, 0x8] - ldr r0, [sp, 0x14] - strb r0, [r4, 0x14] - mov r6, r9 - ldrb r0, [r6] - strb r0, [r4, 0x1] - ldr r7, [r6, 0x4] - str r7, [r4, 0x24] - ldr r0, [r6, 0x8] - str r0, [r4, 0x4] - ldrh r0, [r5, 0x1E] - strh r0, [r4, 0xC] - bl ChnVolSetAsm - ldrb r1, [r4, 0x8] - movs r0, 0x8 - ldrsb r0, [r5, r0] - adds r3, r1, r0 - bpl _081DDCA0 - movs r3, 0 -_081DDCA0: - ldr r6, [sp, 0xC] - cmp r6, 0 - beq _081DDCCE - mov r6, r9 - ldrb r0, [r6, 0x2] - strb r0, [r4, 0x1E] - ldrb r1, [r6, 0x3] - movs r0, 0x80 - tst r0, r1 - bne _081DDCBA - movs r0, 0x70 - tst r0, r1 - bne _081DDCBC -_081DDCBA: - movs r1, 0x8 -_081DDCBC: - strb r1, [r4, 0x1F] - ldrb r2, [r5, 0x9] - adds r1, r3, 0 - ldr r0, [sp, 0xC] - ldr r3, [sp, 0x4] - ldr r3, [r3, 0x30] - bl call_r3 - b _081DDCDC -_081DDCCE: - ldr r0, [r5, o_MusicPlayerTrack_unk_3C] - str r0, [r4, 0x18] - ldrb r2, [r5, 0x9] - adds r1, r3, 0 - adds r0, r7, 0 - bl MidiKeyToFreq -_081DDCDC: - str r0, [r4, 0x20] - movs r0, 0x80 - strb r0, [r4] - ldrb r1, [r5] - movs r0, 0xF0 - ands r0, r1 - strb r0, [r5] -_081DDCEA: - add sp, 0x18 - pop {r0-r7} - mov r8, r0 - mov r9, r1 - mov r10, r2 - mov r11, r3 - pop {r0} - bx r0 - .pool - thumb_func_end ply_note - - thumb_func_start ply_endtie -ply_endtie: - push {r4,r5} - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] - ldrb r3, [r2] - cmp r3, 0x80 - bhs _081DDD16 - strb r3, [r1, o_MusicPlayerTrack_key] - adds r2, 0x1 - str r2, [r1, o_MusicPlayerTrack_cmdPtr] - b _081DDD18 -_081DDD16: - ldrb r3, [r1, o_MusicPlayerTrack_key] -_081DDD18: - ldr r1, [r1, o_MusicPlayerTrack_chan] - cmp r1, 0 - beq _081DDD40 - movs r4, 0x83 - movs r5, 0x40 -_081DDD22: - ldrb r2, [r1, o_SoundChannel_status] - tst r2, r4 - beq _081DDD3A - tst r2, r5 - bne _081DDD3A - ldrb r0, [r1, o_SoundChannel_mk] - cmp r0, r3 - bne _081DDD3A - movs r0, 0x40 - orrs r2, r0 - strb r2, [r1, o_SoundChannel_status] - b _081DDD40 -_081DDD3A: - ldr r1, [r1, o_SoundChannel_np] - cmp r1, 0 - bne _081DDD22 -_081DDD40: - pop {r4,r5} - bx lr - thumb_func_end ply_endtie - - thumb_func_start clear_modM -clear_modM: - movs r2, 0 - strb r2, [r1, o_MusicPlayerTrack_modM] - strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC] - ldrb r2, [r1, o_MusicPlayerTrack_modT] - cmp r2, 0 - bne _081DDD54 - movs r2, 0xC - b _081DDD56 -_081DDD54: - movs r2, 0x3 -_081DDD56: - ldrb r3, [r1, o_MusicPlayerTrack_flags] - orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] - bx lr - thumb_func_end clear_modM - - thumb_func_start ld_r3_tp_adr_i -ld_r3_tp_adr_i_unchecked: - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] - adds r3, r2, 1 - str r3, [r1, o_MusicPlayerTrack_cmdPtr] - ldrb r3, [r2] - bx lr - thumb_func_end ld_r3_tp_adr_i - - thumb_func_start ply_lfos -ply_lfos: - mov r12, lr - bl ld_r3_tp_adr_i_unchecked - strb r3, [r1, o_MusicPlayerTrack_lfoSpeed] - cmp r3, 0 - bne _081DDD7C - bl clear_modM -_081DDD7C: - bx r12 - thumb_func_end ply_lfos - - thumb_func_start ply_mod -ply_mod: - mov r12, lr - bl ld_r3_tp_adr_i_unchecked - strb r3, [r1, o_MusicPlayerTrack_mod] - cmp r3, 0 - bne _081DDD90 - bl clear_modM -_081DDD90: - bx r12 - thumb_func_end ply_mod - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/m4a_3.s b/asm/m4a_3.s index a842ae925..82b6a2467 100644 --- a/asm/m4a_3.s +++ b/asm/m4a_3.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/gba_constants.inc" .include "constants/m4a_constants.inc" diff --git a/asm/macros.inc b/asm/macros.inc deleted file mode 100644 index 6d8657892..000000000 --- a/asm/macros.inc +++ /dev/null @@ -1,149 +0,0 @@ - .include "asm/macros/asm.inc" - .include "asm/macros/function.inc" - .include "asm/macros/movement.inc" - .include "asm/macros/pokemon_data.inc" - .include "asm/macros/ec.inc" - .include "asm/macros/map.inc" - - .macro region_map_location x, y, width, height, name - .byte \x - .byte \y - .byte \width - .byte \height - .4byte gMapName_\name - .endm - - .macro obj_tiles address, uncompressed_size, tag - .4byte \address - .2byte \uncompressed_size - .2byte \tag - .endm - - .macro null_obj_tiles - obj_tiles 0, 0, 0 - .endm - - .macro obj_pal address, tag - .4byte \address - .2byte \tag - .2byte 0 @ padding - .endm - - .macro null_obj_pal - obj_pal 0, 0 - .endm - - .macro paired_pals tag, address - .2byte \tag - .2byte 0 @ padding - .4byte \address - .endm - -@ For object animation frames. - .macro obj_frame_tiles address, uncompressed_size - .4byte \address - .2byte \uncompressed_size - .2byte 0 @ padding - .endm - - .macro spr_template tile_tag, pal_tag, oam, anims, images, affine_anims, callback - .2byte \tile_tag - .2byte \pal_tag - .4byte \oam - .4byte \anims - .4byte \images - .4byte \affine_anims - .4byte \callback - .endm - -@ Berry trees have a table defining the palette slot used for each of their 5 -@ stages. However, the first 2 stages always use the same slots regardless of -@ the type of tree and the slots of the last 3 stages always equal each other. - .macro berry_tree_palette_slot_table slot - .byte 3, 4, \slot, \slot, \slot - .endm - - .macro subsprite x, y, priority, tile_num_offset, size - .2byte \x - .2byte \y - .2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size - .2byte 0 @ padding - .endm - - .macro obj_image_anim_frame pic_id, duration, flags = 0 - .2byte \pic_id - .byte (\flags) | (\duration) - .byte 0 @ padding - .endm - - .macro obj_image_anim_loop count - .2byte 0xfffd - .byte \count - .byte 0 @ padding - .endm - - .macro obj_image_anim_jump target_index - .2byte 0xfffe - .byte \target_index - .byte 0 @ padding - .endm - - .macro obj_image_anim_end - .2byte 0xffff - .2byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_frame delta_x_scale, delta_y_scale, delta_angle, duration - .2byte \delta_x_scale - .2byte \delta_y_scale - .byte \delta_angle - .byte \duration - .2byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_loop count - .2byte 0x7ffd - .2byte \count - .4byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_jump target_index - .2byte 0x7ffe - .2byte \target_index - .4byte 0 @ padding - .endm - - .macro obj_rot_scal_anim_end unknown=0 - .2byte 0x7fff - .2byte \unknown - .fill 4 @ padding - .endm - - .macro credits_entry number, text - .4byte \number - .4byte \text - .endm - - .macro door_anim_frame unknown, offset - .byte \unknown - .byte 0 @ padding - .2byte \offset - .endm - - .macro door_anim_gfx metatile_num, unknown, tile_addr, palette_addr - .2byte \metatile_num - .2byte \unknown - .4byte \tile_addr - .4byte \palette_addr - .endm - - .macro trainer_eye_trainer opp_1, opp_2, opp_3, opp_4, opp_5, map_name - .2byte OPPONENT_\opp_1 - .2byte OPPONENT_\opp_2 - .2byte OPPONENT_\opp_3 - .2byte OPPONENT_\opp_4 - .2byte OPPONENT_\opp_5 - .2byte GROUP_\map_name - .2byte MAP_\map_name - .space 2 - .endm diff --git a/asm/macros/asm.inc b/asm/macros/asm.inc deleted file mode 100644 index 26b2707ca..000000000 --- a/asm/macros/asm.inc +++ /dev/null @@ -1,17 +0,0 @@ - .ifndef GUARD_ASM_MACROS_ASM_INC - .set GUARD_ASM_MACROS_ASM_INC, 1 - - .macro inc x - .set \x, \x + 1 - .endm - - .macro enum_start x=0 - .set __enum__, \x - .endm - - .macro enum constant - .equiv \constant, __enum__ - inc __enum__ - .endm - - .endif @ GUARD_ASM_MACROS_ASM_INC diff --git a/asm/macros/battle_ai_script.inc b/asm/macros/battle_ai_script.inc deleted file mode 100644 index 679e30340..000000000 --- a/asm/macros/battle_ai_script.inc +++ /dev/null @@ -1,554 +0,0 @@ - .macro if_random_less_than percent, address - .byte 0x00 - .byte \percent - .4byte \address - .endm - - @ unused - .macro if_random_greater_than percent, address - .byte 0x01 - .byte \percent - .4byte \address - .endm - - @ unused - .macro if_random_equal address - .byte 0x02 - .4byte \address - .endm - - @ unused - .macro if_random_not_equal address - .byte 0x03 - .4byte \address - .endm - - .macro score score - .byte 0x04 - .byte \score - .endm - - .macro if_hp_less_than target, percent, address - .byte 0x05 - .byte \target - .byte \percent - .4byte \address - .endm - - .macro if_hp_more_than target, percent, address - .byte 0x06 - .byte \target - .byte \percent - .4byte \address - .endm - - .macro if_hp_equal target, percent, address - .byte 0x07 - .byte \target - .byte \percent - .4byte \address - .endm - - .macro if_hp_not_equal target, percent, address - .byte 0x08 - .byte \target - .byte \percent - .4byte \address - .endm - - .macro if_status target, status, address - .byte 0x09 - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_not_status target, status, address - .byte 0x0a - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_status2 target, status, address - .byte 0x0b - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_not_status2 target, status, address - .byte 0x0c - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_status3 target, status, address - .byte 0x0d - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_not_status3 target, status, address - .byte 0x0e - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_status4 target, status, address - .byte 0x0f - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_not_status4 target, status, address - .byte 0x10 - .byte \target - .4byte \status - .4byte \address - .endm - - .macro if_less_than value, address - .byte 0x11 - .byte \value - .4byte \address - .endm - - .macro if_more_than value, address - .byte 0x12 - .byte \value - .4byte \address - .endm - - .macro if_equal value, address - .byte 0x13 - .byte \value - .4byte \address - .endm - - .macro if_not_equal value, address - .byte 0x14 - .byte \value - .4byte \address - .endm - - .macro if_less_than_32 value, address - .byte 0x15 - .4byte \value - .4byte \address - .endm - - .macro if_more_than_32 value, address - .byte 0x16 - .4byte \value - .4byte \address - .endm - - .macro if_equal_32 value, address - .byte 0x17 - .4byte \value - .4byte \address - .endm - - .macro if_not_equal_32 value, address - .byte 0x18 - .4byte \value - .4byte \address - .endm - - .macro if_move move, address - .byte 0x19 - .2byte \move - .4byte \address - .endm - - .macro if_not_move move, address - .byte 0x1a - .2byte \move - .4byte \address - .endm - - .macro if_in_bytes list, address - .byte 0x1b - .4byte \list - .4byte \address - .endm - - .macro if_not_in_bytes list, address - .byte 0x1c - .4byte \list - .4byte \address - .endm - - .macro if_in_words list, address - .byte 0x1d - .4byte \list - .4byte \address - .endm - - .macro if_not_in_words list, address - .byte 0x1e - .4byte \list - .4byte \address - .endm - - .macro if_user_can_damage address - .byte 0x1f - .4byte \address - .endm - - .macro if_user_cant_damage address - .byte 0x20 - .4byte \address - .endm - - .macro get_turn_count - .byte 0x21 - .endm - - .macro get_type byte - .byte 0x22 - .byte \byte - .endm - - @ unused - .macro get_move_power - .byte 0x23 - .endm - - .macro is_most_powerful_move - .byte 0x24 - .endm - - .macro get_move target - .byte 0x25 - .byte \target - .endm - - .macro if_arg_equal type, address - .byte 0x26 - .byte \type - .4byte \address - .endm - - @ unused - .macro if_arg_not_equal type, address - .byte 0x27 - .byte \type - .4byte \address - .endm - - .macro if_would_go_first target, address - .byte 0x28 - .byte \target - .4byte \address - .endm - - .macro if_would_not_go_first target, address - .byte 0x29 - .byte \target - .4byte \address - .endm - - @ nullsub - .macro ai_2a - .byte 0x2a - .endm - - @ nullsub - .macro ai_2b - .byte 0x2b - .endm - - .macro count_alive_pokemon target - .byte 0x2c - .byte \target - .endm - - @ unused - .macro get_considered_move - .byte 0x2d - .endm - - .macro get_effect - .byte 0x2e - .endm - - .macro get_ability target - .byte 0x2f - .byte \target - .endm - - @ unused - .macro get_highest_possible_damage - .byte 0x30 - .endm - - .macro if_damage_bonus value, address - .byte 0x31 - .byte \value - .4byte \address - .endm - - @ nullsub - .macro ai_32 - .byte 0x32 - .endm - - @ nullsub - .macro ai_33 - .byte 0x33 - .endm - - .macro if_status_in_party target, status, address - .byte 0x34 - .byte \target - .4byte \status - .4byte \address - .endm - - @ bugged - .macro if_status_not_in_party target, status, address - .byte 0x35 - .byte \target - .4byte \status - .4byte \address - .endm - - .macro get_weather - .byte 0x36 - .endm - - .macro if_effect byte, address - .byte 0x37 - .byte \byte - .4byte \address - .endm - - .macro if_not_effect byte, address - .byte 0x38 - .byte \byte - .4byte \address - .endm - - .macro if_stat_level_less_than target, stat, level, address - .byte 0x39 - .byte \target - .byte \stat - .byte \level - .4byte \address - .endm - - .macro if_stat_level_more_than target, stat, level, address - .byte 0x3a - .byte \target - .byte \stat - .byte \level - .4byte \address - .endm - - .macro if_stat_level_equal target, stat, level, address - .byte 0x3b - .byte \target - .byte \stat - .byte \level - .4byte \address - .endm - - .macro if_stat_level_not_equal target, stat, level, address - .byte 0x3c - .byte \target - .byte \stat - .byte \level - .4byte \address - .endm - - .macro if_can_faint address - .byte 0x3d - .4byte \address - .endm - - .macro if_cant_faint address - .byte 0x3e - .4byte \address - .endm - - @ unused - .macro if_has_move, target, move, address - .byte 0x3f - .byte \target - .2byte \move - .4byte \address - .endm - - @ unused - .macro if_dont_have_move, target, move, address - .byte 0x40 - .byte \target - .2byte \move - .4byte \address - .endm - - .macro if_move_effect target, effect, address - .byte 0x41 - .byte \target - .byte \effect - .4byte \address - .endm - - .macro if_not_move_effect target, effect, address - .byte 0x42 - .byte \target - .byte \effect - .4byte \address - .endm - - .macro if_last_move_did_damage target, byte, address - .byte 0x43 - .byte \target - .byte \byte - .4byte \address - .endm - - .macro if_encored target, address - .byte 0x44 - .byte \target - .4byte \address - .endm - - .macro flee - .byte 0x45 - .endm - - .macro if_random_100 address - .byte 0x46 - .4byte \address - .endm - - .macro watch - .byte 0x47 - .endm - - .macro get_hold_effect target - .byte 0x48 - .byte \target - .endm - - .macro get_gender target - .byte 0x49 - .byte \target - .endm - - .macro is_first_turn target - .byte 0x4a - .byte \target - .endm - - .macro get_stockpile_count target - .byte 0x4b - .byte \target - .endm - - .macro is_double_battle - .byte 0x4c - .endm - - .macro get_item target - .byte 0x4d - .byte \target - .endm - - .macro get_move_type_from_result - .byte 0x4e - .endm - - .macro get_move_power_from_result - .byte 0x4f - .endm - - .macro get_move_effect_from_result - .byte 0x50 - .endm - - .macro get_protect_count target - .byte 0x51 - .byte \target - .endm - - @ nullsub - .macro ai_52 - .byte 0x52 - .endm - - @ nullsub - .macro ai_53 - .byte 0x53 - .endm - - @ nullsub - .macro ai_54 - .byte 0x54 - .endm - - @ nullsub - .macro ai_55 - .byte 0x55 - .endm - - @ nullsub - .macro ai_56 - .byte 0x56 - .endm - - @ nullsub - .macro ai_57 - .byte 0x57 - .endm - - @ unused - .macro call address - .byte 0x58 - .4byte \address - .endm - - .macro jump address - .byte 0x59 - .4byte \address - .endm - - .macro end - .byte 0x5a - .endm - - .macro if_level_cond cond, address - .byte 0x5b - .byte \cond - .4byte \address - .endm - - .macro if_user_higher_level address - if_level_cond 0, \address - .endm - - .macro if_target_higher_level address - if_level_cond 1, \address - .endm - - .macro if_equal_levels address - if_level_cond 2, \address - .endm - - @ unused - .macro if_taunted address - .byte 0x5c - .4byte \address - .endm - - .macro if_not_taunted address - .byte 0x5d - .4byte \address - .endm diff --git a/asm/macros/battle_anim.inc b/asm/macros/battle_anim.inc deleted file mode 100644 index 4ff845032..000000000 --- a/asm/macros/battle_anim.inc +++ /dev/null @@ -1,266 +0,0 @@ - .macro loadsprite id - .byte 0x00 - .2byte \id - .endm - - .macro unloadsprite id - .byte 0x01 - .2byte \id - .endm - - .macro sprite template, priority, argv:vararg - .byte 0x02 - .4byte \template - .byte \priority - .byte (.Lsprite_\@_2 - .Lsprite_\@_1) / 2 -.Lsprite_\@_1: - .2byte \argv -.Lsprite_\@_2: - .endm - - .macro createtask addr, priority, argv:vararg - .byte 0x03 - .4byte \addr - .byte \priority - .byte (.Lcreatetask_\@_2 - .Lcreatetask_\@_1) / 2 -.Lcreatetask_\@_1: - .2byte \argv -.Lcreatetask_\@_2: - .endm - - .macro pause delay - .byte 0x04 - .byte \delay - .endm - - .macro wait - .byte 0x05 - .endm - - .macro hang1 - .byte 0x06 - .endm - - .macro hang2 - .byte 0x07 - .endm - - .macro end - .byte 0x08 - .endm - - .macro playse id - .byte 0x09 - .2byte \id - .endm - - .macro monbg which - .byte 0x0A - .byte \which - .endm - - .macro clearmonbg which - .byte 0x0B - .byte \which - .endm - - .macro setalpha eva, evb - .byte 0x0C - .2byte ((\evb) << 8) | (\eva) - .endm - - .macro blendoff - .byte 0x0D - .endm - - .macro call addr - .byte 0x0E - .4byte \addr - .endm - - .macro ret - .byte 0x0F - .endm - - .macro setvar var_num, value - .byte 0x10 - .byte \var_num - .2byte \value - .endm - - .macro ifelse addr1, addr2 - .byte 0x11 - .4byte \addr1 - .4byte \addr2 - .endm - - .macro jumpif cond, addr - .byte 0x12 - .byte \cond - .4byte \addr - .endm - - .macro jump addr - .byte 0x13 - .4byte \addr - .endm - - .macro fadetobg id - .byte 0x14 - .byte \id - .endm - - .macro restorebg - .byte 0x15 - .endm - - .macro waitbgfadeout - .byte 0x16 - .endm - - .macro waitbgfadein - .byte 0x17 - .endm - - .macro changebg id - .byte 0x18 - .byte \id - .endm - - .macro panse_19 id, pan - .byte 0x19 - .2byte \id - .byte \pan - .endm - - .macro setpan pan - .byte 0x1A - .byte \pan - .endm - - .macro panse_1B id, pan_start, pan_end, step, delay - .byte 0x1B - .2byte \id - .byte \pan_start - .byte \pan_end - .byte \step - .byte \delay - .endm - - .macro panse_1C id, pan, delay, count - .byte 0x1C - .2byte \id - .byte \pan - .byte \delay - .byte \count - .endm - - .macro panse_1D id, pan, count - .byte 0x1D - .2byte \id - .byte \pan - .byte \count - .endm - - .macro setbldcnt bldcnt - .byte 0x1E - .2byte \bldcnt - .endm - - .macro createtask_1F addr, argv:vararg - .byte 0x1F - .4byte \addr - .byte (.Lcreatetask_1F_\@_2 - .Lcreatetask_1F_\@_1) / 2 -.Lcreatetask_1F_\@_1: - .2byte \argv -.Lcreatetask_1F_\@_2: - .endm - - .macro waitsound - .byte 0x20 - .endm - - .macro jumpvareq var_num, value, addr - .byte 0x21 - .byte \var_num - .2byte \value - .4byte \addr - .endm - - .macro monbg_22 unk - .byte 0x22 - .byte \unk - .endm - - .macro clearmonbg_23 unk - .byte 0x23 - .byte \unk - .endm - - .macro jumpunkcond addr - .byte 0x24 - .4byte \addr - .endm - - .macro fadetobg_25 a, b, c - .byte 0x25 - .byte \a - .byte \b - .byte \c - .endm - - .macro panse_26 id, pan_start, pan_end, step, delay - .byte 0x26 - .2byte \id - .byte \pan_start - .byte \pan_end - .byte \step - .byte \delay - .endm - - .macro panse_27 id, pan_start, pan_end, step, delay - .byte 0x27 - .2byte \id - .byte \pan_start - .byte \pan_end - .byte \step - .byte \delay - .endm - - .macro monbgprio_28 unk - .byte 0x28 - .byte \unk - .endm - - .macro monbgprio_29 - .byte 0x29 - .endm - - .macro monbgprio_2A unk - .byte 0x2A - .byte \unk - .endm - - .macro invisible side - .byte 0x2B - .byte \side - .endm - - .macro visible side - .byte 0x2C - .byte \side - .endm - - .macro doublebattle_2D unk - .byte 0x2D - .byte \unk - .endm - - .macro doublebattle_2E unk - .byte 0x2E - .byte \unk - .endm - - .macro stopsound - .byte 0x2F - .endm diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc deleted file mode 100644 index e4fa0c454..000000000 --- a/asm/macros/battle_script.inc +++ /dev/null @@ -1,1414 +0,0 @@ -@ 0 == -@ 1 != -@ 2 < -@ 3 > -@ 4 &= - - .macro calculatedamage - critical - atk5 - atk6 - atk7 - .endm - - - .macro attackcanceler - .byte 0x00 - .endm - - .macro accuracycheck address, param1 - .byte 0x01 - .4byte \address - .2byte \param1 - .endm - - .macro attackstring - .byte 0x02 - .endm - - .macro ppreduce - .byte 0x03 - .endm - - .macro critcalc - .byte 0x04 - .endm - - .macro damagecalc - .byte 0x05 - .endm - - .macro typecalc - .byte 0x06 - .endm - - .macro adjustnormaldamage - .byte 0x07 - .endm - - .macro adjustnormaldamage2 - .byte 0x08 - .endm - - .macro attackanimation - .byte 0x09 - .endm - - .macro waitanimation - .byte 0x0a - .endm - - .macro healthbarupdate bank - .byte 0x0b - .byte \bank - .endm - - .macro datahpupdate bank - .byte 0x0c - .byte \bank - .endm - - .macro critmessage - .byte 0x0d - .endm - - .macro effectivenesssound - .byte 0x0e - .endm - - .macro resultmessage - .byte 0x0f - .endm - - .macro printstring string - .byte 0x10 - .2byte \string - .endm - - .macro printselectionstring string - .byte 0x11 - .2byte \string - .endm - - .macro waitmessage delay - .byte 0x12 - .2byte \delay - .endm - - .macro printfromtable table - .byte 0x13 - .4byte \table - .endm - - .macro printselectionstringfromtable table - .byte 0x14 - .4byte \table - .endm - - .macro seteffectwithchance - .byte 0x15 - .endm - - .macro seteffectprimary - .byte 0x16 - .endm - - .macro seteffectsecondary - .byte 0x17 - .endm - - .macro clearstatusfromeffect bank - .byte 0x18 - .byte \bank - .endm - - .macro tryfaintmon bank, param2, param3 - .byte 0x19 - .byte \bank - .byte \param2 - .4byte \param3 - .endm - - .macro dofaintanimation param1 - .byte 0x1a - .byte \param1 - .endm - - .macro cleareffectsonfaint bank - .byte 0x1b - .byte \bank - .endm - - .macro jumpifstatus bank, status, address - .byte 0x1c - .byte \bank - .4byte \status - .4byte \address - .endm - - .macro jumpifstatus2 bank, status, address - .byte 0x1d - .byte \bank - .4byte \status - .4byte \address - .endm - - .macro jumpifability bank, ability, address - .byte 0x1e - .byte \bank - .byte \ability - .4byte \address - .endm - - .macro jumpifsideaffecting bank, status, address - .byte 0x1f - .byte \bank - .2byte \status - .4byte \address - .endm - - .macro jumpifstat bank, flag, quantity, statid, address - .byte 0x20 - .byte \bank - .byte \flag - .byte \quantity - .byte \statid - .4byte \address - .endm - - .macro jumpifstatus3condition bank, mask, status, address - .byte 0x21 - .byte \bank - .4byte \mask - .byte \status - .4byte \address - .endm - - .macro jumpiftype bank, type, address - .byte 0x22 - .byte \bank - .byte \type - .4byte \address - .endm - - .macro getexp bank - .byte 0x23 - .byte \bank - .endm - - .macro atk24 address - .byte 0x24 - .4byte \address - .endm - - .macro movevaluescleanup - .byte 0x25 - .endm - - .macro setmultihit param1 - .byte 0x26 - .byte \param1 - .endm - - .macro decrementmultihit address - .byte 0x27 - .4byte \address - .endm - - .macro goto address - .byte 0x28 - .4byte \address - .endm - - .macro jumpifbyte ifflag, checkaddr, compare, address - .byte 0x29 - .byte \ifflag - .4byte \checkaddr - .byte \compare - .4byte \address - .endm - - .macro jumpifhalfword ifflag, checkaddr, compare, address - .byte 0x2a - .byte \ifflag - .4byte \checkaddr - .2byte \compare - .4byte \address - .endm - - .macro jumpifword ifflag, checkaddr, compare, address - .byte 0x2b - .byte \ifflag - .4byte \checkaddr - .4byte \compare - .4byte \address - .endm - - .macro jumpifarrayequal mem1, mem2, size, address - .byte 0x2c - .4byte \mem1 - .4byte \mem2 - .byte \size - .4byte \address - .endm - - .macro jumpifarraynotequal mem1, mem2, size, address - .byte 0x2d - .4byte \mem1 - .4byte \mem2 - .byte \size - .4byte \address - .endm - - .macro setbyte pointer, value - .byte 0x2e - .4byte \pointer - .byte \value - .endm - - .macro addbyte pointer, value - .byte 0x2f - .4byte \pointer - .byte \value - .endm - - .macro subbyte pointer, value - .byte 0x30 - .4byte \pointer - .byte \value - .endm - - .macro copyarray destination, source, size - .byte 0x31 - .4byte \destination - .4byte \source - .byte \size - .endm - - .macro copyarraywithindex param1, param2, param3, byte - .byte 0x32 - .4byte \param1 - .4byte \param2 - .4byte \param3 - .byte \byte - .endm - - .macro orbyte pointer, value - .byte 0x33 - .4byte \pointer - .byte \value - .endm - - .macro orhalfword pointer, value - .byte 0x34 - .4byte \pointer - .2byte \value - .endm - - .macro orword pointer, value - .byte 0x35 - .4byte \pointer - .4byte \value - .endm - - .macro bicbyte pointer, value - .byte 0x36 - .4byte \pointer - .byte \value - .endm - - .macro bichalfword pointer, value - .byte 0x37 - .4byte \pointer - .2byte \value - .endm - - .macro bicword pointer, value - .byte 0x38 - .4byte \pointer - .4byte \value - .endm - - .macro pause pause_duration - .byte 0x39 - .2byte \pause_duration - .endm - - .macro waitstate - .byte 0x3a - .endm - - .macro healthbar_update bank - .byte 0x3b - .byte \bank - .endm - - .macro return - .byte 0x3c - .endm - - .macro end - .byte 0x3d - .endm - - .macro end2 - .byte 0x3e - .endm - - .macro end3 - .byte 0x3f - .endm - - .macro jumpifaffectedbyprotect address - .byte 0x40 - .4byte \address - .endm - - .macro call address - .byte 0x41 - .4byte \address - .endm - - .macro jumpiftype2 bank, type, address - .byte 0x42 - .byte \bank - .byte \type - .4byte \address - .endm - - .macro jumpifabilitypresent ability, address - .byte 0x43 - .byte \ability - .4byte \address - .endm - - .macro endselectionscript - .byte 0x44 - .endm - - .macro playanimation bank, animation, var_address - .byte 0x45 - .byte \bank - .byte \animation - .4byte \var_address - .endm - - .macro playanimation2 bank, address, int - .byte 0x46 - .byte \bank - .4byte \address - .4byte \int - .endm - - .macro setgraphicalstatchangevalues - .byte 0x47 - .endm - - .macro playstatchangeanimation bank, color, byte - .byte 0x48 - .byte \bank - .byte \color - .byte \byte - .endm - - .macro moveend byte1, byte2 - .byte 0x49 - .byte \byte1 - .byte \byte2 - .endm - - .macro typecalc2 - .byte 0x4a - .endm - - .macro returnatktoball - .byte 0x4b - .endm - - .macro getswitchedmondata bank - .byte 0x4c - .byte \bank - .endm - - .macro switchindataupdate bank - .byte 0x4d - .byte \bank - .endm - - .macro switchinanim bank, byte - .byte 0x4e - .byte \bank - .byte \byte - .endm - - .macro jumpifcantswitch bank, address - .byte 0x4f - .byte \bank - .4byte \address - .endm - - .macro openpartyscreen bank, address - .byte 0x50 - .byte \bank - .4byte \address - .endm - - .macro switchhandleorder bank, param2 - .byte 0x51 - .byte \bank - .byte \param2 - .endm - - .macro switchineffects bank - .byte 0x52 - .byte \bank - .endm - - .macro trainerslidein bank - .byte 0x53 - .byte \bank - .endm - - .macro playse word - .byte 0x54 - .2byte \word - .endm - - .macro fanfare int - .byte 0x55 - .2byte \int - .endm - - .macro playfaintcry bank_or_side - .byte 0x56 - .byte \bank_or_side - .endm - - .macro atk57 - .byte 0x57 - .endm - - .macro returntoball bank - .byte 0x58 - .byte \bank - .endm - - .macro handlelearnnewmove param1, param2, bank_maybe - .byte 0x59 - .4byte \param1 - .4byte \param2 - .byte \bank_maybe - .endm - - .macro yesnoboxlearnmove address - .byte 0x5a - .4byte \address - .endm - - .macro yesnoboxstoplearningmove address - .byte 0x5b - .4byte \address - .endm - - .macro hitanimation bank - .byte 0x5c - .byte \bank - .endm - - .macro getmoneyreward - .byte 0x5d - .endm - - .macro atk5e bank - .byte 0x5e - .byte \bank - .endm - - .macro atk5f - .byte 0x5f - .endm - - .macro incrementgamestat byte - .byte 0x60 - .byte \byte - .endm - - .macro drawpartystatussummary bank_or_side - .byte 0x61 - .byte \bank_or_side - .endm - - .macro atk62 bank_or_side - .byte 0x62 - .byte \bank_or_side - .endm - - .macro jumptorandomattack bank - .byte 0x63 - .byte \bank - .endm - - .macro statusanimation bank - .byte 0x64 - .byte \bank - .endm - - .macro status2animation bank_or_side, address - .byte 0x65 - .byte \bank_or_side - .4byte \address - .endm - - .macro chosenstatusanimation bank_or_side, bank_or_side2, address - .byte 0x66 - .byte \bank_or_side - .byte \bank_or_side2 - .4byte \address - .endm - - .macro yesnobox - .byte 0x67 - .endm - - .macro cancelallactions - .byte 0x68 - .endm - - .macro adjustsetdamage - .byte 0x69 - .endm - - .macro removeitem bank - .byte 0x6a - .byte \bank - .endm - - .macro atknameinbuff1 - .byte 0x6b - .endm - - .macro drawlvlupbox - .byte 0x6c - .endm - - .macro resetsentmonsvalue - .byte 0x6d - .endm - - .macro setatktoplayer0 - .byte 0x6e - .endm - - .macro makevisible bank - .byte 0x6f - .byte \bank - .endm - - .macro recordlastability bank - .byte 0x70 - .byte \bank - .endm - - .macro buffermovetolearn - .byte 0x71 - .endm - - .macro jumpifplayerran address - .byte 0x72 - .4byte \address - .endm - - .macro hpthresholds bank - .byte 0x73 - .byte \bank - .endm - - .macro hpthresholds2 bank - .byte 0x74 - .byte \bank - .endm - - .macro useitemonopponent - .byte 0x75 - .endm - - .macro various bank, byte - .byte 0x76 - .byte \bank - .byte \byte - .endm - - .macro setprotectlike - .byte 0x77 - .endm - - .macro faintifabilitynotdamp - .byte 0x78 - .endm - - .macro setatkhptozero - .byte 0x79 - .endm - - .macro jumpifnexttargetvalid address - .byte 0x7a - .4byte \address - .endm - - .macro tryhealhalfhealth address, byte - .byte 0x7b - .4byte \address - .byte \byte - .endm - - .macro trymirrormove - .byte 0x7c - .endm - - .macro setrain - .byte 0x7d - .endm - - .macro setreflect - .byte 0x7e - .endm - - .macro setseeded - .byte 0x7f - .endm - - .macro manipulatedamage id - .byte 0x80 - .byte \id - .endm - - .macro trysetrest address - .byte 0x81 - .4byte \address - .endm - - .macro jumpifnotfirstturn address - .byte 0x82 - .4byte \address - .endm - - .macro nop - .byte 0x83 - .endm - - .macro jumpifcantmakeasleep address - .byte 0x84 - .4byte \address - .endm - - .macro stockpile - .byte 0x85 - .endm - - .macro stockpiletobasedamage address - .byte 0x86 - .4byte \address - .endm - - .macro stockpiletohpheal address - .byte 0x87 - .4byte \address - .endm - - .macro negativedamage - .byte 0x88 - .endm - - .macro statbuffchange target, address - .byte 0x89 - .byte \target - .4byte \address - .endm - - .macro normalisebuffs - .byte 0x8a - .endm - - .macro setbide - .byte 0x8b - .endm - - .macro confuseifrepeatingattackends - .byte 0x8c - .endm - - .macro setmultihitcounter count - .byte 0x8d - .byte \count - .endm - - .macro initmultihitstring - .byte 0x8e - .endm - - .macro forcerandomswitch address - .byte 0x8f - .4byte \address - .endm - - .macro tryconversiontypechange address - .byte 0x90 - .4byte \address - .endm - - .macro givepaydaymoney - .byte 0x91 - .endm - - .macro setlightscreen - .byte 0x92 - .endm - - .macro tryKO address - .byte 0x93 - .4byte \address - .endm - - .macro damagetohalftargethp - .byte 0x94 - .endm - - .macro setsandstorm - .byte 0x95 - .endm - - .macro weatherdamage - .byte 0x96 - .endm - - .macro tryinfatuating address - .byte 0x97 - .4byte \address - .endm - - .macro updatestatusicon byte - .byte 0x98 - .byte \byte - .endm - - .macro setmist - .byte 0x99 - .endm - - .macro setfocusenergy - .byte 0x9a - .endm - - .macro transformdataexecution - .byte 0x9b - .endm - - .macro setsubstitute - .byte 0x9c - .endm - - .macro mimicattackcopy address - .byte 0x9d - .4byte \address - .endm - - .macro metronome - .byte 0x9e - .endm - - .macro dmgtolevel - .byte 0x9f - .endm - - .macro psywavedamageeffect - .byte 0xa0 - .endm - - .macro counterdamagecalculator address - .byte 0xa1 - .4byte \address - .endm - - .macro mirrorcoatdamagecalculator address - .byte 0xa2 - .4byte \address - .endm - - .macro disablelastusedattack address - .byte 0xa3 - .4byte \address - .endm - - .macro trysetencore address - .byte 0xa4 - .4byte \address - .endm - - .macro painsplitdmgcalc address - .byte 0xa5 - .4byte \address - .endm - - .macro settypetorandomresistance address - .byte 0xa6 - .4byte \address - .endm - - .macro setalwayshitflag - .byte 0xa7 - .endm - - .macro copymovepermanently address - .byte 0xa8 - .4byte \address - .endm - - .macro trychoosesleeptalkmove address - .byte 0xa9 - .4byte \address - .endm - - .macro setdestinybond - .byte 0xaa - .endm - - .macro trysetdestinybondtohappen - .byte 0xab - .endm - - .macro remaininghptopower - .byte 0xac - .endm - - .macro tryspiteppreduce address - .byte 0xad - .4byte \address - .endm - - .macro healpartystatus - .byte 0xae - .endm - - .macro cursetarget address - .byte 0xaf - .4byte \address - .endm - - .macro trysetspikes address - .byte 0xb0 - .4byte \address - .endm - - .macro setforesight - .byte 0xb1 - .endm - - .macro trysetperishsong address - .byte 0xb2 - .4byte \address - .endm - - .macro rolloutdamagecalculation - .byte 0xb3 - .endm - - .macro jumpifconfusedandstatmaxed bank, address - .byte 0xb4 - .byte \bank - .4byte \address - .endm - - .macro furycuttercalc - .byte 0xb5 - .endm - - .macro happinesstodamagecalculation - .byte 0xb6 - .endm - - .macro presentdamagecalculation - .byte 0xb7 - .endm - - .macro setsafeguard - .byte 0xb8 - .endm - - .macro magnitudedamagecalculation - .byte 0xb9 - .endm - - .macro jumpifnopursuitswitchdmg address - .byte 0xba - .4byte \address - .endm - - .macro setsunny - .byte 0xbb - .endm - - .macro maxattackhalvehp address - .byte 0xbc - .4byte \address - .endm - - .macro copyfoestats address - .byte 0xbd - .4byte \address - .endm - - .macro rapidspinfree - .byte 0xbe - .endm - - .macro setdefensecurlbit - .byte 0xbf - .endm - - .macro recoverbasedonsunlight address - .byte 0xc0 - .4byte \address - .endm - - .macro hiddenpowercalc - .byte 0xc1 - .endm - - .macro selectfirstvalidtarget - .byte 0xc2 - .endm - - .macro trysetfutureattack address - .byte 0xc3 - .4byte \address - .endm - - .macro trydobeatup address1, address2 - .byte 0xc4 - .4byte \address1 - .4byte \address2 - .endm - - .macro setsemiinvulnerablebit - .byte 0xc5 - .endm - - .macro clearsemiinvulnerablebit - .byte 0xc6 - .endm - - .macro setminimize - .byte 0xc7 - .endm - - .macro sethail - .byte 0xc8 - .endm - - .macro jumpifattackandspecialattackcannotfall address - .byte 0xc9 - .4byte \address - .endm - - .macro setforcedtarget - .byte 0xca - .endm - - .macro setcharge - .byte 0xcb - .endm - - .macro callterrainattack - .byte 0xcc - .endm - - .macro cureifburnedparalysedorpoisoned address - .byte 0xcd - .4byte \address - .endm - - .macro settorment address - .byte 0xce - .4byte \address - .endm - - .macro jumpifnodamage address - .byte 0xcf - .4byte \address - .endm - - .macro settaunt address - .byte 0xd0 - .4byte \address - .endm - - .macro trysethelpinghand address - .byte 0xd1 - .4byte \address - .endm - - .macro tryswapitems address - .byte 0xd2 - .4byte \address - .endm - - .macro trycopyability address - .byte 0xd3 - .4byte \address - .endm - - .macro trywish byte, address - .byte 0xd4 - .byte \byte - .4byte \address - .endm - - .macro trysetroots address - .byte 0xd5 - .4byte \address - .endm - - .macro doubledamagedealtifdamaged - .byte 0xd6 - .endm - - .macro setyawn address - .byte 0xd7 - .4byte \address - .endm - - .macro setdamagetohealthdifference address - .byte 0xd8 - .4byte \address - .endm - - .macro scaledamagebyhealthratio - .byte 0xd9 - .endm - - .macro tryswapabilities address - .byte 0xda - .4byte \address - .endm - - .macro tryimprision address - .byte 0xdb - .4byte \address - .endm - - .macro trysetgrudge address - .byte 0xdc - .4byte \address - .endm - - .macro weightdamagecalculation - .byte 0xdd - .endm - - .macro assistattackselect address - .byte 0xde - .4byte \address - .endm - - .macro trysetmagiccoat address - .byte 0xdf - .4byte \address - .endm - - .macro trysetsnatch address - .byte 0xe0 - .4byte \address - .endm - - .macro trygetintimidatetarget address - .byte 0xe1 - .4byte \address - .endm - - .macro switchoutabilities bank - .byte 0xe2 - .byte \bank - .endm - - .macro jumpifhasnohp bank, address - .byte 0xe3 - .byte \bank - .4byte \address - .endm - - .macro getsecretpowereffect - .byte 0xe4 - .endm - - .macro pickup - .byte 0xe5 - .endm - - .macro docastformchangeanimation - .byte 0xe6 - .endm - - .macro trycastformdatachange - .byte 0xe7 - .endm - - .macro settypebasedhalvers address - .byte 0xe8 - .4byte \address - .endm - - .macro setweatherballtype - .byte 0xe9 - .endm - - .macro tryrecycleitem address - .byte 0xea - .4byte \address - .endm - - .macro settypetoterrain address - .byte 0xeb - .4byte \address - .endm - - .macro pursuitrelated address - .byte 0xec - .4byte \address - .endm - - .macro snatchsetbanks - .byte 0xed - .endm - - .macro removelightscreenreflect - .byte 0xee - .endm - - .macro handleballthrow - .byte 0xef - .endm - - .macro givecaughtmon - .byte 0xf0 - .endm - - .macro trysetcaughtmondexflags address - .byte 0xf1 - .4byte \address - .endm - - .macro displaydexinfo - .byte 0xf2 - .endm - - .macro trygivecaughtmonnick address - .byte 0xf3 - .4byte \address - .endm - - .macro subattackerhpbydmg - .byte 0xf4 - .endm - - .macro removeattackerstatus1 - .byte 0xf5 - .endm - - .macro finishaction - .byte 0xf6 - .endm - - .macro finishturn - .byte 0xf7 - .endm - - .macro trainerslideout bank - .byte 0xf8 - .byte \bank - .endm - -@ various command changed to more readable macros - .macro cancelmultiturnmoves bank - various \bank, VARIOUS_CANCEL_MULTI_TURN_MOVES - .endm - - .macro setmagiccoattarget bank - various \bank, VARIOUS_SET_MAGIC_COAT_TARGET - .endm - - .macro getifcantrunfrombattle bank - various \bank, VARIOUS_IS_RUNNING_IMPOSSIBLE - .endm - - .macro getmovetarget bank - various \bank, VARIOUS_GET_MOVE_TARGET - .endm - - .macro various4 bank - various \bank, 4 - .endm - - .macro resetintrimidatetracebits bank - various \bank, VARIOUS_RESET_INTIMIDATE_TRACE_BITS - .endm - - .macro updatechoicemoveonlvlup bank - various \bank, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP - .endm - - .macro various7 bank - various \bank, 7 - .endm - - .macro various8 bank - various \bank, 8 - .endm - - .macro various9 bank - various \bank, 9 - .endm - - .macro various10 bank - various \bank, 10 - .endm - - .macro various11 bank - various \bank, 11 - .endm - - .macro various12 bank - various \bank, 12 - .endm - - .macro forfeityesnobox bank - various \bank, VARIOUS_EMIT_YESNOBOX - .endm - - .macro various14 bank - various \bank, 14 - .endm - - .macro various15 bank - various \bank, 15 - .endm - - .macro various16 bank - various \bank, 16 - .endm - - .macro various17 bank - various \bank, 17 - .endm - - .macro waitcry bank - various \bank, VARIOUS_WAIT_CRY - .endm - - .macro returnopponentmon1toball bank - various \bank, VARIOUS_RETURN_OPPONENT_MON1 - .endm - - .macro returnopponentmon2toball bank - various \bank, VARIOUS_RETURN_OPPONENT_MON2 - .endm - - .macro various21 bank - various \bank, 21 - .endm - - .macro various22 bank - various \bank, 22 - .endm - - .macro various23 bank - various \bank, 23 - .endm - - .macro various24 bank - various \bank, 24 - .endm - - .macro setoutcomeonteleport bank - various \bank, VARIOUS_SET_TELEPORT_OUTCOME - .endm - - .macro playtrainerdefeatbgm bank - various \bank, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC - .endm - -@ helpful macros - .macro setstatchanger stat, stages, down - setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7 - .endm - - .macro setmoveeffect effect - setbyte cEFFECT_CHOOSER \effect - .endm - - .macro chosenstatus1animation bank, status - chosenstatusanimation \bank 0x0 \status - .endm - - .macro chosenstatus2animation bank, status - chosenstatusanimation \bank 0x1 \status - .endm - - .macro sethword dst, value - setbyte \dst, \value & 0xFF - setbyte \dst + 1, (\value >> 8) & 0xFF - .endm - - .macro setword dst, value - setbyte \dst, \value & 0xFF - setbyte \dst + 1, (\value >> 8) & 0xFF - setbyte \dst + 2, (\value >> 16) & 0xFF - setbyte \dst + 3, (\value >> 24) & 0xFF - .endm - - .macro copybyte dst, src - copyarray \dst, \src, 0x1 - .endm - - .macro copyhword dst, src - copyarray \dst, \src, 0x2 - .endm - - .macro copyword dst, src - copyarray \dst, \src, 0x4 - .endm - - .macro jumpifbytenotequal byte1, byte2, jumpptr - jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr - .endm - - .macro jumpifbyteequal byte1, byte2, jumpptr - jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr - .endm - - .macro jumpifmove move, jumpptr - jumpifhalfword EQUAL, gCurrentMove, \move, \jumpptr - .endm - - .macro jumpifnotmove move, jumpptr - jumpifhalfword NOT_EQUAL, gCurrentMove, \move, \jumpptr - .endm - - .macro jumpifstatus3 bank, status, jumpptr - jumpifstatus3condition \bank, \status, 0x0, \jumpptr - .endm - - .macro jumpifnostatus3 bank, status, jumpptr - jumpifstatus3condition \bank, \status, 0x1, \jumpptr - .endm - - .macro jumpifmovehadnoeffect jumpptr - jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, \jumpptr - .endm - - .macro jumpifbattletype flags, jumpptr - jumpifhalfword COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr - .endm - - .macro jumpifnotbattletype flags, jumpptr - jumpifhalfword NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr - .endm diff --git a/asm/macros/contest_ai_script.inc b/asm/macros/contest_ai_script.inc deleted file mode 100644 index 05d70e351..000000000 --- a/asm/macros/contest_ai_script.inc +++ /dev/null @@ -1,506 +0,0 @@ -@ Add a positive/negative value to the score of the move being evaluated. - - .macro score score - .byte 0x00 - .byte \score - .endm - -@ turn (AKA "Appeal No.") - - .macro get_turn - .byte 0x01 - .endm - - .macro if_turn_less_than param, addr - .byte 0x02 - .byte \param - .4byte \addr - .endm - - .macro if_turn_more_than param, addr - .byte 0x03 - .byte \param - .4byte \addr - .endm - - .macro if_turn_eq param, addr - .byte 0x04 - .byte \param - .4byte \addr - .endm - - .macro if_turn_not_eq param, addr - .byte 0x05 - .byte \param - .4byte \addr - .endm - -@ audience excitement - - .macro get_excitement - .byte 0x06 - .endm - - .macro if_excitement_less_than param, addr - .byte 0x07 - .byte \param - .4byte \addr - .endm - - .macro if_excitement_more_than param, addr - .byte 0x08 - .byte \param - .4byte \addr - .endm - - .macro if_excitement_eq param, addr - .byte 0x09 - .byte \param - .4byte \addr - .endm - - .macro if_excitement_not_eq param, addr - .byte 0x0A - .byte \param - .4byte \addr - .endm - -@ the order that the user goes in the current turn - - .macro get_user_order - .byte 0x0B - .endm - - .macro if_user_order_less_than param addr - .byte 0x0C - .byte \param - .4byte \addr - .endm - - .macro if_user_order_more_than param addr - .byte 0x0D - .byte \param - .4byte \addr - .endm - - .macro if_user_order_eq param addr - .byte 0x0E - .byte \param - .4byte \addr - .endm - - .macro if_user_order_not_eq param addr - .byte 0x0F - .byte \param - .4byte \addr - .endm - -@ user condition - - .macro get_user_condition - .byte 0x10 - .endm - - .macro if_user_condition_less_than param, addr - .byte 0x11 - .byte \param - .4byte \addr - .endm - - .macro if_user_condition_more_than param, addr - .byte 0x12 - .byte \param - .4byte \addr - .endm - - .macro if_user_condition_eq param, addr - .byte 0x13 - .byte \param - .4byte \addr - .endm - - .macro if_user_condition_not_eq param, addr - .byte 0x14 - .byte \param - .4byte \addr - .endm - -@ 15 -@ 16 -@ 17 -@ 18 -@ 19 -@ 1A -@ 1B -@ 1C -@ 1D -@ 1E - -@ contest type - - .macro get_contest_type - .byte 0x1F - .endm - - .macro if_contest_type_eq param, addr - .byte 0x20 - .byte \param - .4byte \addr - .endm - - .macro if_contest_type_not_eq param, addr - .byte 0x21 - .byte \param - .4byte \addr - .endm - -@ move excitement (change in excitement due to move) - - .macro get_move_excitement - .byte 0x22 - .endm - - .macro if_move_excitement_less_than param, addr - .byte 0x23 - .byte \param - .4byte \addr - .endm - - .macro if_move_excitement_more_than param, addr - .byte 0x24 - .byte \param - .4byte \addr - .endm - - .macro if_move_excitement_eq param, addr - .byte 0x25 - .byte \param - .4byte \addr - .endm - - .macro if_move_excitement_not_eq param, addr - .byte 0x26 - .byte \param - .4byte \addr - .endm - -@ move effect - - .macro get_effect - .byte 0x27 - .endm - - .macro if_effect_eq param, addr - .byte 0x28 - .byte \param - .4byte \addr - .endm - - .macro if_effect_not_eq param, addr - .byte 0x29 - .byte \param - .4byte \addr - .endm - -@ move effect type - - .macro get_effect_type - .byte 0x2A - .endm - - .macro if_effect_type_eq param, addr - .byte 0x2B - .byte \param - .4byte \addr - .endm - - .macro if_effect_type_not_eq param, addr - .byte 0x2C - .byte \param - .4byte \addr - .endm - -@ whether the current move is the most appealing in the user's moveset - - .macro check_most_appealing_move - .byte 0x2D - .endm - - .macro if_most_appealing_move addr - .byte 0x2E - .4byte \addr - .endm - -@ 2F -@ 30 -@ 31 -@ 32 -@ 33 -@ 34 -@ 35 -@ 36 -@ 37 -@ 38 -@ 39 -@ 3A - -@ number of times current move has been used - - .macro get_move_used_count - .byte 0x3B - .endm - - .macro if_move_used_count_less_than param, addr - .byte 0x3C - .byte \param - .4byte \addr - .endm - - .macro if_move_used_count_more_than param, addr - .byte 0x3D - .byte \param - .4byte \addr - .endm - - .macro if_move_used_count_eq param, addr - .byte 0x3E - .byte \param - .4byte \addr - .endm - - .macro if_move_used_count_not_eq param, addr - .byte 0x3F - .byte \param - .4byte \addr - .endm - -@ whether the current move is a combo starter (with another move in the moveset) - - .macro check_combo_starter - .byte 0x40 - .endm - - .macro if_combo_starter addr - .byte 0x41 - .4byte \addr - .endm - - .macro if_not_combo_starter addr - .byte 0x42 - .4byte \addr - .endm - -@ whether the current move is a combo finisher (with another move in the moveset) - - .macro check_combo_finisher - .byte 0x43 - .endm - - .macro if_combo_finisher addr - .byte 0x44 - .4byte \addr - .endm - - .macro if_not_combo_finisher addr - .byte 0x45 - .4byte \addr - .endm - -@ whether the current move would finish a combo - - .macro check_would_finish_combo - .byte 0x46 - .endm - - .macro if_would_finish_combo addr - .byte 0x47 - .4byte \addr - .endm - - .macro if_would_not_finish_combo addr - .byte 0x48 - .4byte \addr - .endm - -@ condition of mon (indexed by order) - - .macro get_condition mon - .byte 0x49 - .byte \mon - .endm - - .macro if_condition_less_than mon, value, addr - .byte 0x4A - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_condition_more_than mon, value, addr - .byte 0x4B - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_condition_eq mon, value, addr - .byte 0x4C - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_condition_not_eq mon, value, addr - .byte 0x4D - .byte \mon - .byte \value - .4byte \addr - .endm - -@ whether the mon used a combo starter move -@ Even though this value is always 1 or 0 (i.e. TRUE/FALSE), -@ there are less-than and greater-than comparison operations for some reason. - - .macro get_used_combo_starter mon - .byte 0x4E - .byte \mon - .endm - - .macro if_used_combo_starter_less_than mon, value, addr - .byte 0x4F - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_used_combo_starter_more_than mon, value, addr - .byte 0x50 - .byte \mon - .byte \value - .4byte \addr - .endm - - - .macro if_used_combo_starter_eq mon, value, addr - .byte 0x51 - .byte \mon - .byte \value - .4byte \addr - .endm - - .macro if_used_combo_starter_not_eq mon, value, addr - .byte 0x52 - .byte \mon - .byte \value - .4byte \addr - .endm - -@ whether the mon can make an appeal - - .macro check_can_participate mon - .byte 0x53 - .byte \mon - .endm - - .macro if_can_participate mon, addr - .byte 0x54 - .byte \mon - .4byte \addr - .endm - - .macro if_cannot_participate mon, addr - .byte 0x55 - .byte \mon - .4byte \addr - .endm - -@ 56 -@ 57 - - .macro contest_58 param addr - .byte 0x58 - .byte \param - .4byte \addr - .endm - -@ 59 -@ 5A -@ 5B -@ 5C -@ 5D -@ 5E -@ 5F -@ 60 -@ 61 -@ 62 -@ 63 -@ 64 -@ 65 -@ 66 -@ 67 -@ 68 -@ 69 -@ 6A -@ 6B -@ 6C -@ 6D -@ 6E -@ 6F -@ 70 -@ 71 -@ 72 -@ 73 -@ 74 -@ 75 -@ 76 -@ 77 -@ 78 -@ 79 -@ 7A -@ 7B -@ 7C - - .macro if_random param addr - .byte 0x7D - .byte \param - .4byte \addr - .endm - -@ 7E - - .macro jump addr - .byte 0x7F - .4byte \addr - .endm - - .macro call addr - .byte 0x80 - .4byte \addr - .endm - - .macro end - .byte 0x81 - .endm - - .macro check_user_has_exciting_move - .byte 0x82 - .endm - - .macro if_user_has_exciting_move addr - .byte 0x83 - .4byte \addr - .endm - - .macro if_user_doesnt_have_exciting_move addr - .byte 0x84 - .4byte \addr - .endm - -@ 85 -@ 86 - - .macro if_effect_in_user_moveset param addr - .byte 0x87 - .2byte \param - .4byte \addr - .endm diff --git a/asm/macros/ec.inc b/asm/macros/ec.inc deleted file mode 100644 index d3fd45c2f..000000000 --- a/asm/macros/ec.inc +++ /dev/null @@ -1,8 +0,0 @@ - - .macro ec_duplicates count - .2byte 0xff00 + \count - .endm - - .macro ec_words_by_letter label - .2byte (gEasyChatWordsByLetter_\label - gEasyChatWordsAlphabetized) / 2 - .endm diff --git a/asm/macros/event.inc b/asm/macros/event.inc deleted file mode 100644 index fcbd3a055..000000000 --- a/asm/macros/event.inc +++ /dev/null @@ -1,1481 +0,0 @@ - @ Does nothing. - .macro nop - .byte 0x00 - .endm - - @ Does nothing. - .macro nop1 - .byte 0x01 - .endm - - @ Terminates script execution. - .macro end - .byte 0x02 - .endm - - @ Jumps back to after the last-executed call statement, and continues script execution from there. - .macro return - .byte 0x03 - .endm - - @ Jumps to destination and continues script execution from there. The location of the calling script is remembered and can be returned to later. - .macro call destination - .byte 0x04 - .4byte \destination - .endm - - @ Jumps to destination and continues script execution from there. - .macro goto destination - .byte 0x05 - .4byte \destination - .endm - - @ If the result of the last comparison matches condition (see Comparison operators), jumps to destination and continues script execution from there. - .macro goto_if condition, destination - .byte 0x06 - .byte \condition - .4byte \destination - .endm - - @ If the result of the last comparison matches condition (see Comparison operators), calls destination. - .macro call_if condition, destination - .byte 0x07 - .byte \condition - .4byte \destination - .endm - - @ Jumps to the standard function at index function. - .macro gotostd function - .byte 0x08 - .byte \function - .endm - - @ Calls the standard function at index function. - .macro callstd function - .byte 0x09 - .byte \function - .endm - - @ If the result of the last comparison matches condition (see Comparison operators), jumps to the standard function at index function. - .macro gotostd_if condition, function - .byte 0x0a - .byte \condition - .byte \function - .endm - - @ If the result of the last comparison matches condition (see Comparison operators), calls the standard function at index function. - .macro callstd_if condition, function - .byte 0x0b - .byte \condition - .byte \function - .endm - - @ Executes a script stored in a default RAM location. - .macro gotoram - .byte 0x0c - .endm - - @ Terminates script execution and "resets the script RAM". - .macro killscript - .byte 0x0d - .endm - - @ Sets some status related to Mystery Event. - .macro setmysteryeventstatus value - .byte 0x0e - .byte \value - .endm - - @ Sets the specified script bank to value. - .macro loadword destination, value - .byte 0x0f - .byte \destination - .4byte \value - .endm - - @ Sets the specified script bank to value. - .macro loadbyte destination, value - .byte 0x10 - .byte \destination - .byte \value - .endm - - @ Sets the byte at offset to value. - .macro writebytetoaddr value, offset - .byte 0x11 - .byte \value - .4byte \offset - .endm - - @ Copies the byte value at source into the specified script bank. - .macro loadbytefromaddr destination, source - .byte 0x12 - .byte \destination - .4byte \source - .endm - - @ Not sure. Judging from XSE's description I think it takes the least-significant byte in bank source and writes it to destination. - .macro setptrbyte source, destination - .byte 0x13 - .byte \source - .4byte \destination - .endm - - @ Copies the contents of bank source into bank destination. - .macro copylocal destination, source - .byte 0x14 - .byte \destination - .byte \source - .endm - - @ Copies the byte at source to destination, replacing whatever byte was previously there. - .macro copybyte destination, source - .byte 0x15 - .4byte \destination - .4byte \source - .endm - - @ Changes the value of destination to value. - .macro setvar destination, value - .byte 0x16 - .2byte \destination - .2byte \value - .endm - - @ Changes the value of destination by adding value to it. Overflow is not prevented (0xFFFF + 1 = 0x0000). - .macro addvar destination, value - .byte 0x17 - .2byte \destination - .2byte \value - .endm - - @ Changes the value of destination by subtracting value to it. Overflow is not prevented (0x0000 - 1 = 0xFFFF). - .macro subvar destination, value - .byte 0x18 - .2byte \destination - .2byte \value - .endm - - @ Copies the value of source into destination. - .macro copyvar destination, source - .byte 0x19 - .2byte \destination - .2byte \source - .endm - - @ If source is not a variable, then this function acts like setvar. Otherwise, it acts like copyvar. - .macro setorcopyvar destination, source - .byte 0x1a - .2byte \destination - .2byte \source - .endm - - @ Compares the values of script banks a and b, after forcing the values to bytes. - .macro compare_local_to_local byte1, byte2 - .byte 0x1b - .byte \byte1 - .byte \byte2 - .endm - - @ Compares the least-significant byte of the value of script bank a to a fixed byte value (b). - .macro compare_local_to_value a, b - .byte 0x1c - .byte \a - .byte \b - .endm - - @ Compares the least-significant byte of the value of script bank a to the byte located at offset b. - .macro compare_local_to_addr a, b - .byte 0x1d - .byte \a - .4byte \b - .endm - - @ Compares the byte located at offset a to the least-significant byte of the value of script bank b. - .macro compare_addr_to_local a, b - .byte 0x1e - .4byte \a - .byte \b - .endm - - @ Compares the byte located at offset a to a fixed byte value (b). - .macro compare_addr_to_value a, b - .byte 0x1f - .4byte \a - .byte \b - .endm - - @ Compares the byte located at offset a to the byte located at offset b. - .macro compare_addr_to_addr a, b - .byte 0x20 - .4byte \a - .4byte \b - .endm - - @ Compares the value of `var` to a fixed word value (b). - .macro compare_var_to_value var, value - .byte 0x21 - .2byte \var - .2byte \value - .endm - - @ Compares the value of `var1` to the value of `var2`. - .macro compare_var_to_var var1, var2 - .byte 0x22 - .2byte \var1 - .2byte \var2 - .endm - - @ Generic compare macro which attempts to deduce argument types based on their values - @ Any values between 0x4000 to 0x4FFF and 0x8000 to 0x8FFF are considered event variable identifiers - .macro compare arg1, arg2 - .if (((\arg1) >> 12) == 4 || ((\arg1) >> 12) == 8) && (((\arg2) >> 12) == 4 || ((\arg2) >> 12) == 8) - compare_var_to_var (\arg1), (\arg2) - .elseif (((\arg1) >> 12) == 4 || ((\arg1) >> 12) == 8) && ((\arg2) >= -0xFFFF && (\arg2) <= 0xFFFF) - compare_var_to_value (\arg1), ((\arg2) & 0xFFFF) - .else - .error "Invalid arguments for 'compare'" - .endif - .endm - - @ Calls the native C function stored at `func`. - .macro callnative func - .byte 0x23 - .4byte \func - .endm - - @ Replaces the script with the function stored at `func`. Execution returns to the bytecode script when func returns TRUE. - .macro gotonative func - .byte 0x24 - .4byte \func - .endm - - @ Calls a special function; that is, a function designed for use by scripts and listed in a table of pointers. - .macro special function - .byte 0x25 - .2byte SPECIAL_\function - .endm - - @ Calls a special function. That function's output (if any) will be written to the variable you specify. - .macro specialvar output, function - .byte 0x26 - .2byte \output - .2byte SPECIAL_\function - .endm - - @ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang). - .macro waitstate - .byte 0x27 - .endm - - @ Blocks script execution for time (frames? milliseconds?). - .macro delay time - .byte 0x28 - .2byte \time - .endm - - @ Sets a to 1. - .macro setflag a - .byte 0x29 - .2byte \a - .endm - - @ Sets a to 0. - .macro clearflag a - .byte 0x2a - .2byte \a - .endm - - @ Compares a to 1. - .macro checkflag a - .byte 0x2b - .2byte \a - .endm - - @ Initializes the RTC`s local time offset to the given hour and minute. In FireRed, this command is a nop. - .macro initclock hour, minute - .byte 0x2c - .2byte \hour - .2byte \minute - .endm - - @ Runs time based events. In FireRed, this command is a nop. - .macro dodailyevents - .byte 0x2d - .endm - - @ Sets the values of variables 0x8000, 0x8001, and 0x8002 to the current hour, minute, and second. In FRLG, this command sets those variables to zero. - .macro gettime - .byte 0x2e - .endm - - @ Plays the specified (sound_number) sound. Only one sound may play at a time, with newer ones interrupting older ones. - .macro playse sound_number - .byte 0x2f - .2byte \sound_number - .endm - - @ Blocks script execution until the currently-playing sound (triggered by playse) finishes playing. - .macro waitse - .byte 0x30 - .endm - - @ Plays the specified (fanfare_number) fanfare. - .macro playfanfare fanfare_number - .byte 0x31 - .2byte \fanfare_number - .endm - - @ Blocks script execution until all currently-playing fanfares finish. - .macro waitfanfare - .byte 0x32 - .endm - - @ Plays the specified (song_number) song. The byte is apparently supposed to be 0x00. - .macro playbgm song_number, unknown - .byte 0x33 - .2byte \song_number - .byte \unknown - .endm - - @ Saves the specified (song_number) song to be played later. - .macro savebgm song_number - .byte 0x34 - .2byte \song_number - .endm - - @ Crossfades the currently-playing song into the map's default song. - .macro fadedefaultbgm - .byte 0x35 - .endm - - @ Crossfades the currently-playng song into the specified (song_number) song. - .macro fadenewbgm song_number - .byte 0x36 - .2byte \song_number - .endm - - @ Fades out the currently-playing song. - .macro fadeoutbgm speed - .byte 0x37 - .byte \speed - .endm - - @ Fades the previously-playing song back in. - .macro fadeinbgm speed - .byte 0x38 - .byte \speed - .endm - - @ Sends the player to Warp warp on Map bank.map. If the specified warp is 0xFF, then the player will instead be sent to (X, Y) on the map. - .macro warp map, warp, X, Y - .byte 0x39 - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Clone of warp that does not play a sound effect. - .macro warpsilent map, warp, X, Y - .byte 0x3a - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Clone of warp that plays a door opening animation before stepping upwards into it. - .macro warpdoor map, warp, X, Y - .byte 0x3b - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Warps the player to another map using a hole animation. - .macro warphole map - .byte 0x3c - map \map - .endm - - @ Clone of warp that uses a teleport effect. It is apparently only used in R/S/E. - .macro warpteleport map, warp, X, Y - .byte 0x3d - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Sets the warp destination to be used later. - .macro setwarp map, warp, X, Y - .byte 0x3e - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Sets the warp destination that a warp to Warp 127 on Map 127.127 will connect to. Useful when a map has warps that need to go to script-controlled locations (i.e. elevators). - .macro setdynamicwarp map, warp, X, Y - .byte 0x3f - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Sets the destination that diving or emerging from a dive will take the player to. - .macro setdivewarp map, warp, X, Y - .byte 0x40 - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Sets the destination that falling into a hole will take the player to. - .macro setholewarp map, warp, X, Y - .byte 0x41 - map \map - .byte \warp - .2byte \X - .2byte \Y - .endm - - @ Retrieves the player's zero-indexed X- and Y-coordinates in the map, and stores them in the specified variables. - .macro getplayerxy X, Y - .byte 0x42 - .2byte \X - .2byte \Y - .endm - - @ Retrieves the number of Pokemon in the player's party, and stores that number in variable 0x800D (LASTRESULT). - .macro getpartysize - .byte 0x43 - .endm - - @ Attempts to add quantity of item index to the player's Bag. If the player has enough room, the item will be added and variable 0x800D (LASTRESULT) will be set to 0x0001; otherwise, LASTRESULT is set to 0x0000. - .macro giveitem index, quantity - .byte 0x44 - .2byte \index - .2byte \quantity - .endm - - @ Removes quantity of item index from the player's Bag. - .macro takeitem index, quantity - .byte 0x45 - .2byte \index - .2byte \quantity - .endm - - @ Checks if the player has enough space in their Bag to hold quantity more of item index. Sets variable 0x800D (LASTRESULT) to 0x0001 if there is room, or 0x0000 is there is no room. - .macro checkitemspace index, quantity - .byte 0x46 - .2byte \index - .2byte \quantity - .endm - - @ Checks if the player has quantity or more of item index in their Bag. Sets variable 0x800D (LASTRESULT) to 0x0001 if the player has enough of the item, or 0x0000 if they have fewer than quantity of the item. - .macro checkitem index, quantity - .byte 0x47 - .2byte \index - .2byte \quantity - .endm - - @ Checks which Bag pocket the specified (index) item belongs in, and writes the value to variable 0x800D (LASTRESULT). This script is used to show the name of the proper Bag pocket when the player receives an item via callstd (simplified to giveitem in XSE). - .macro checkitemtype index - .byte 0x48 - .2byte \index - .endm - - @ Adds a quantity amount of item index to the player's PC. Both arguments can be variables. - .macro givepcitem index, quantity - .byte 0x49 - .2byte \index - .2byte \quantity - .endm - - @ Checks for quantity amount of item index in the player's PC. Both arguments can be variables. - .macro checkpcitem index, quantity - .byte 0x4a - .2byte \index - .2byte \quantity - .endm - - @ Adds decoration to the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro givedecoration decoration - .byte 0x4b - .2byte \decoration - .endm - - @ Removes a decoration from the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro takedecoration decoration - .byte 0x4c - .2byte \decoration - .endm - - @ Checks for decoration in the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro checkdecor decoration - .byte 0x4d - .2byte \decoration - .endm - - @ Checks if the player has enough space in their PC to hold decoration. Sets variable 0x800D (LASTRESULT) to 0x0001 if there is room, or 0x0000 is there is no room. In FireRed, this command is a nop. (The argument is read, but not used for anything.) - .macro checkdecorspace decoration - .byte 0x4e - .2byte \decoration - .endm - - @ Applies the movement data at movements to the specified (index) Object event. Also closes any standard message boxes that are still open. - @ This command in fact uses variables to access the Object event ID. So, for example, if you setvar 0x8000 to 0x3, and then use applymovementpos 0x8000 @move1, Object event 3 will have the movements at @move1 applied to them. - .macro applymovement index, movements, mapGroup, mapNum - .ifb \mapGroup - .byte 0x4f - .2byte \index - .4byte \movements - .else - .byte 0x50 - .2byte \index - .4byte \movements - .byte \mapGroup - .byte \mapNum - .endif - .endm - - @ Blocks script execution until the movements being applied to the specified (index) Object event finish. If the specified Object event is 0x0000, then the command will block script execution until all Object events affected by applymovement finish their movements. If the specified Object event is not currently being manipulated with applymovement, then this command does nothing. - .macro waitmovement index, mapBank, mapNum - .ifb \mapBank - .byte 0x51 - .2byte \index - .else - .byte 0x52 - .2byte \index - .byte \mapBank - .byte \mapNum - .endif - .endm - - @ Attempts to hide the specified (local_ID, a local ID) Object event on the specified map, by setting its visibility flag if it has a valid one. If the Object does not have a valid visibility flag, this command does nothing. - @ If no map is specified, then the current map is used - .macro removeobject localId, mapGroup, mapNum - .ifb \mapGroup - .byte 0x53 - .2byte \localId - .else - .byte 0x54 - .2byte \localId - .byte \mapGroup - .byte \mapNum - .endif - .endm - - .macro addobject localId, mapGroup, mapNum - .ifb \mapGroup - .byte 0x55 - .2byte \localId - .else - .byte 0x56 - .2byte \localId - .byte \mapGroup - .byte \mapNum - .endif - .endm - - @ Sets the specified (index) Object's position on the current map. - .macro setobjectxy index, x, y - .byte 0x57 - .2byte \index - .2byte \x - .2byte \y - .endm - - .macro showobjectat index, map - .byte 0x58 - .2byte \index - map \map - .endm - - .macro hideobjectat index, map - .byte 0x59 - .2byte \index - map \map - .endm - - @ If the script was called by a Object event, then that Object will turn to face toward the tile that the player is stepping off of. - .macro faceplayer - .byte 0x5a - .endm - - .macro turnobject index, direction - .byte 0x5b - .2byte \index - .byte \direction - .endm - - @ If the Trainer flag for Trainer index is not set, this command does absolutely nothing. - .macro trainerbattle type, trainer, word, pointer1, pointer2, pointer3, pointer4 - .byte 0x5c - .byte \type - .2byte \trainer - .2byte \word - .if \type == 0 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .elseif \type == 1 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ event script - .elseif \type == 2 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ event script - .elseif \type == 3 - .4byte \pointer1 @ text - .elseif \type == 4 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .elseif \type == 5 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .elseif \type == 6 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .4byte \pointer4 @ event script - .elseif \type == 7 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .elseif \type == 8 - .4byte \pointer1 @ text - .4byte \pointer2 @ text - .4byte \pointer3 @ text - .4byte \pointer4 @ event script - .endif - .endm - - @ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this command behind-the-scenes), and blocks script execution until the battle finishes. - .macro trainerbattlebegin - .byte 0x5d - .endm - - @ Goes to address after the trainerbattle command (called by the battle functions, see battle_setup.c) - .macro gotopostbattlescript - .byte 0x5e - .endm - - @ Goes to address specified in the trainerbattle command (called by the battle functions, see battle_setup.c) - .macro gotobeatenscript - .byte 0x5f - .endm - - @ Compares Flag (trainer + 0x500) to 1. (If the flag is set, then the trainer has been defeated by the player.) - .macro checktrainerflag trainer - .byte 0x60 - .2byte \trainer - .endm - - @ Sets Flag (trainer + 0x500). - .macro settrainerflag trainer - .byte 0x61 - .2byte \trainer - .endm - - @ Clears Flag (trainer + 0x500). - .macro cleartrainerflag trainer - .byte 0x62 - .2byte \trainer - .endm - - .macro setobjectxyperm index, x, y - .byte 0x63 - .2byte \index - .2byte \x - .2byte \y - .endm - - .macro moveobjectoffscreen index - .byte 0x64 - .2byte \index - .endm - - .macro setobjectmovementtype word, byte - .byte 0x65 - .2byte \word - .byte \byte - .endm - - @ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the box and its text have been fully drawn. - .macro waitmessage - .byte 0x66 - .endm - - @ Starts displaying a standard message box containing the specified text. If text is a pointer, then the string at that offset will be loaded and used. If text is script bank 0, then the value of script bank 0 will be treated as a pointer to the text. (You can use loadpointer to place a string pointer in a script bank.) - .macro message text - .byte 0x67 - .4byte \text - .endm - - @ Closes the current message box. - .macro closemessage - .byte 0x68 - .endm - - @ Ceases movement for all Objects on-screen. - .macro lockall - .byte 0x69 - .endm - - @ If the script was called by an Object, then that Object's movement will cease. - .macro lock - .byte 0x6a - .endm - - @ Resumes normal movement for all Objects on-screen, and closes any standard message boxes that are still open. - .macro releaseall - .byte 0x6b - .endm - - @ If the script was called by an Object, then that Object's movement will resume. This command also closes any standard message boxes that are still open. - .macro release - .byte 0x6c - .endm - - @ Blocks script execution until the player presses any key. - .macro waitbuttonpress - .byte 0x6d - .endm - - @ Displays a YES/NO multichoice box at the specified coordinates, and blocks script execution until the user makes a selection. Their selection is stored in variable 0x800D (LASTRESULT); 0x0000 for "NO" or if the user pressed B, and 0x0001 for "YES". - .macro yesnobox x, y - .byte 0x6e - .byte \x - .byte \y - .endm - - @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. If b is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. - .macro multichoice x, y, list, b - .byte 0x6f - .byte \x - .byte \y - .byte \list - .byte \b - .endm - - @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If b is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. - .macro multichoicedefault x, y, list, default, b - .byte 0x70 - .byte \x - .byte \y - .byte \list - .byte \default - .byte \b - .endm - - @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The per_row argument determines how many list items will be shown on a single row of the box. - .macro multichoicegrid x, y, list, per_row, B - .byte 0x71 - .byte \x - .byte \y - .byte \list - .byte \per_row - .byte \B - .endm - - .macro drawbox byte1, byte2, byte3, byte4 - .byte 0x72 - .byte \byte1 - .byte \byte2 - .byte \byte3 - .byte \byte4 - .endm - - .macro erasebox byte1, byte2, byte3, byte4 - .byte 0x73 - .byte \byte1 - .byte \byte2 - .byte \byte3 - .byte \byte4 - .endm - - .macro drawboxtext byte1, byte2, byte3, byte4 - .byte 0x74 - .byte \byte1 - .byte \byte2 - .byte \byte3 - .byte \byte4 - .endm - - @ Displays a box containing the front sprite for the specified (species) Pokemon species. - .macro drawmonpic species, x, y - .byte 0x75 - .2byte \species - .byte \x - .byte \y - .endm - - @ Hides all boxes displayed with drawmonpic. - .macro erasemonpic - .byte 0x76 - .endm - - @ Draws an image of the winner of the contest. In FireRed, this command is a nop. (The argument is discarded.) - .macro drawcontestwinner a - .byte 0x77 - .byte \a - .endm - - @ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille characters. - .macro braillemessage text - .byte 0x78 - .4byte \text - .endm - - @ Gives the player one of the specified (species) Pokemon at level level holding item. The unknown arguments should all be zeroes. - .macro givemon species, level, item, unknown1, unknown2, unknown3 - .byte 0x79 - .2byte \species - .byte \level - .2byte \item - .4byte \unknown1 - .4byte \unknown2 - .byte \unknown3 - .endm - - .macro giveegg species - .byte 0x7a - .2byte \species - .endm - - .macro setmonmove index, slot, move - .byte 0x7b - .byte \index - .byte \slot - .2byte \move - .endm - - @ Checks if at least one Pokemon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the first Pokemon that knows the move. If not, LASTRESULT is set to 0x0006. Variable 0x8004 is also set to this Pokemon's species. - .macro checkpartymove index - .byte 0x7c - .2byte \index - .endm - - @ Writes the name of the Pokemon at index species to the specified buffer. - .macro bufferspeciesname out, species - .byte 0x7d - .byte \out - .2byte \species - .endm - - @ Writes the name of the species of the first Pokemon in the player's party to the specified buffer. - .macro bufferleadmonspeciesname out - .byte 0x7e - .byte \out - .endm - - @ Writes the nickname of the Pokemon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer. - .macro bufferpartymonnick out, slot - .byte 0x7f - .byte \out - .2byte \slot - .endm - - @ Writes the name of the item at index item to the specified buffer. If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead. - .macro bufferitemname out, item - .byte 0x80 - .byte \out - .2byte \item - .endm - - @ Writes the name of the decoration at index decoration to the specified buffer. In FireRed, this command is a nop. - .macro bufferdecorationname out, decoration - .byte 0x81 - .byte \out - .2byte \decoration - .endm - - @ Writes the name of the move at index move to the specified buffer. - .macro buffermovename out, move - .byte 0x82 - .byte \out - .2byte \move - .endm - - @ Converts the value of input to a decimal string, and writes that string to the specified buffer. - .macro buffernumberstring out, input - .byte 0x83 - .byte \out - .2byte \input - .endm - - @ Writes the standard string identified by index to the specified buffer. This command has no protections in place at all, so specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption. - .macro bufferstdstring out, index - .byte 0x84 - .byte \out - .2byte \index - .endm - - @ Copies the string at offset to the specified buffer. - .macro bufferstring out, offset - .byte 0x85 - .byte \out - .4byte \offset - .endm - - @ Opens the Pokemart system, offering the specified products for sale. - .macro pokemart products - .byte 0x86 - .4byte \products - .endm - - @ Opens the Pokemart system and treats the list of items as decorations. - .macro pokemartdecoration products - .byte 0x87 - .4byte \products - .endm - - @ Apparent clone of pokemartdecoration. - .macro pokemartdecoration2 products - .byte 0x88 - .4byte \products - .endm - - @ Starts up the slot machine minigame. - .macro playslotmachine word - .byte 0x89 - .2byte \word - .endm - - @ Sets a berry tree's specific berry and growth stage. In FireRed, this command is a nop. - .macro setberrytree tree_id, berry, growth_stage - .byte 0x8a - .byte \tree_id - .byte \berry - .byte \growth_stage - .endm - - @ This allows you to choose a Pokemon to use in a contest. In FireRed, this command sets the byte at 0x03000EA8 to 0x01. - .macro choosecontestmon - .byte 0x8b - .endm - - @ Starts a contest. In FireRed, this command is a nop. - .macro startcontest - .byte 0x8c - .endm - - @ Shows the results of a contest. In FireRed, this command is a nop. - .macro showcontestresults - .byte 0x8d - .endm - - @ Starts a contest over a link connection. In FireRed, this command is a nop. - .macro contestlinktransfer - .byte 0x8e - .endm - - @ Stores a random integer between 0 and limit in variable 0x800D (LASTRESULT). - .macro random limit - .byte 0x8f - .2byte \limit - .endm - - @ If check is 0x00, this command adds value to the player's money. - .macro givemoney value, check - .byte 0x90 - .4byte \value - .byte \check - .endm - - @ If check is 0x00, this command subtracts value from the player's money. - .macro takemoney value, check - .byte 0x91 - .4byte \value - .byte \check - .endm - - @ If check is 0x00, this command will check if the player has value or more money; script variable 0x800D (LASTRESULT) is set to 0x0001 if the player has enough money, or 0x0000 if the do not. - .macro checkmoney value, check - .byte 0x92 - .4byte \value - .byte \check - .endm - - @ Spawns a secondary box showing how much money the player has. - .macro showmoneybox x, y - .byte 0x93 - .byte \x - .byte \y - .endm - - @ Hides the secondary box spawned by showmoney. - .macro hidemoneybox x, y - .byte 0x94 - .byte \x - .byte \y - .endm - - @ Updates the secondary box spawned by showmoney. Consumes but does not use arguments. - .macro updatemoneybox x, y - .byte 0x95 - .byte \x - .byte \y - .endm - - @ Gets the price reduction for the index given. In FireRed, this command is a nop. - .macro getpricereduction index - .byte 0x96 - .2byte \index - .endm - - @ Fades the screen to and from black and white. Mode 0x00 fades from black, mode 0x01 fades out to black, mode 0x2 fades in from white, and mode 0x3 fades out to white. - .macro fadescreen effect - .byte 0x97 - .byte \effect - .endm - - @ Fades the screen to and from black and white. Mode 0x00 fades from black, mode 0x01 fades out to black, mode 0x2 fades in from white, and mode 0x3 fades out to white. Other modes may exist. - .macro fadescreenspeed effect, speed - .byte 0x98 - .byte \effect - .byte \speed - .endm - - .macro setflashradius word - .byte 0x99 - .2byte \word - .endm - - .macro animateflash byte - .byte 0x9a - .byte \byte - .endm - - .macro messageautoscroll pointer - .byte 0x9b - .4byte \pointer - .endm - - @ Executes the specified field move animation. - .macro dofieldeffect animation - .byte 0x9c - .2byte \animation - .endm - - @ Sets up the field effect argument argument with the value value. - .macro setfieldeffectargument argument, param - .byte 0x9d - .byte \argument - .2byte \param - .endm - - @ Blocks script execution until all playing field move animations complete. - .macro waitfieldeffect animation - .byte 0x9e - .2byte \animation - .endm - - @ Sets which healing place the player will return to if all of the Pokemon in their party faint. - .macro setrespawn heallocation - .byte 0x9f - .2byte \heallocation - .endm - - @ Checks the player's gender. If male, then 0x0000 is stored in variable 0x800D (LASTRESULT). If female, then 0x0001 is stored in LASTRESULT. - .macro checkplayergender - .byte 0xa0 - .endm - - @ Plays the specified (species) Pokemon's cry. You can use waitcry to block script execution until the sound finishes. - .macro playmoncry species, effect - .byte 0xa1 - .2byte \species - .2byte \effect - .endm - - @ Changes the metatile at (x, y) on the current map. - .macro setmetatile x, y, metatile_number, tile_attrib - .byte 0xa2 - .2byte \x - .2byte \y - .2byte \metatile_number - .2byte \tile_attrib - .endm - - @ Queues a weather change to the default weather for the map. - .macro resetweather - .byte 0xa3 - .endm - - @ Queues a weather change to type weather. - .macro setweather type - .byte 0xa4 - .2byte \type - .endm - - @ Executes the weather change queued with resetweather or setweather. The current weather will smoothly fade into the queued weather. - .macro doweather - .byte 0xa5 - .endm - - @ This command manages cases in which maps have tiles that change state when stepped on (specifically, cracked/breakable floors). - .macro setstepcallback subroutine - .byte 0xa6 - .byte \subroutine - .endm - - .macro setmaplayoutindex index - .byte 0xa7 - .2byte \index - .endm - - .macro setobjectpriority index, map, priority - .byte 0xa8 - .2byte \index - map \map - .byte \priority - .endm - - .macro resetobjectpriority index, map - .byte 0xa9 - .2byte \index - map \map - .endm - - .macro createvobject sprite, byte2, x, y, elevation, direction - .byte 0xaa - .byte \sprite - .byte \byte2 - .2byte \x - .2byte \y - .byte \elevation - .byte \direction - .endm - - .macro turnvobject index, direction - .byte 0xab - .byte \index - .byte \direction - .endm - - @ Opens the door metatile at (X, Y) with an animation. - .macro opendoor x, y - .byte 0xac - .2byte \x - .2byte \y - .endm - - @ Closes the door metatile at (X, Y) with an animation. - .macro closedoor x, y - .byte 0xad - .2byte \x - .2byte \y - .endm - - @ Waits for the door animation started with opendoor or closedoor to finish. - .macro waitdooranim - .byte 0xae - .endm - - @ Sets the door tile at (x, y) to be open without an animation. - .macro setdooropen x, y - .byte 0xaf - .2byte \x - .2byte \y - .endm - - @ Sets the door tile at (x, y) to be closed without an animation. - .macro setdoorclosed x, y - .byte 0xb0 - .2byte \x - .2byte \y - .endm - - @ In FireRed, this command is a nop. - .macro addelevmenuitem - .byte 0xb1 - .endm - - @ In FireRed and Emerald, this command is a nop. - .macro showelevmenu - .byte 0xb2 - .endm - - .macro checkcoins out - .byte 0xb3 - .2byte \out - .endm - - .macro givecoins count - .byte 0xb4 - .2byte \count - .endm - - .macro takecoins count - .byte 0xb5 - .2byte \count - .endm - - @ Prepares to start a wild battle against a species at Level level holding item. Running this command will not affect normal wild battles. You start the prepared battle with dowildbattle. - .macro setwildbattle species, level, item - .byte 0xb6 - .2byte \species - .byte \level - .2byte \item - .endm - - @ Starts a wild battle against the Pokemon generated by setwildbattle. Blocks script execution until the battle finishes. - .macro dowildbattle - .byte 0xb7 - .endm - - .macro setvaddress long, word - .byte 0xb8 - .4byte \long - .2byte \word - .endm - - .macro vgoto pointer - .byte 0xb9 - .4byte \pointer - .endm - - .macro vcall pointer - .byte 0xba - .4byte \pointer - .endm - - .macro vgoto_if byte, pointer - .byte 0xbb - .byte \byte - .4byte \pointer - .endm - - .macro vcall_if byte, pointer - .byte 0xbc - .byte \byte - .4byte \pointer - .endm - - .macro vmessage pointer - .byte 0xbd - .4byte \pointer - .endm - - .macro vloadptr pointer - .byte 0xbe - .4byte \pointer - .endm - - .macro vbufferstring byte, pointer - .byte 0xbf - .byte \byte - .4byte \pointer - .endm - - @ Spawns a secondary box showing how many Coins the player has. - .macro showcoinsbox x, y - .byte 0xc0 - .byte \x - .byte \y - .endm - - @ Hides the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. - .macro hidecoinsbox x, y - .byte 0xc1 - .byte \x - .byte \y - .endm - - @ Updates the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. - .macro updatecoinsbox x, y - .byte 0xc2 - .byte \x - .byte \y - .endm - - @ Increases the value of the specified game stat by 1. The stat's value will not be allowed to exceed 0x00FFFFFF. - .macro incrementgamestat stat - .byte 0xc3 - .byte \stat - .endm - - @ Sets the destination that using an Escape Rope or Dig will take the player to. - .macro setescapewarp map, warp, x, y - .byte 0xc4 - map \map - .byte \warp - .2byte \x - .2byte \y - .endm - - @ Blocks script execution until cry finishes. - .macro waitmoncry - .byte 0xc5 - .endm - - @ Writes the name of the specified (box) PC box to the specified buffer. - .macro bufferboxname out, box - .byte 0xc6 - .byte \out - .2byte \box - .endm - - @ Sets the color of the text in standard message boxes. 0x00 produces blue (male) text, 0x01 produces red (female) text, 0xFF resets the color to the default for the current OW's gender, and all other values produce black text. - .macro textcolor color - .byte 0xc7 - .byte \color - .endm - - @ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of the screen when the Main Menu is opened. - .macro loadhelp pointer - .byte 0xc8 - .4byte \pointer - .endm - - @ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of the screen when the Main Menu is opened. - .macro unloadhelp - .byte 0xc9 - .endm - - @ After using this command, all standard message boxes will use the signpost frame. - .macro signmsg - .byte 0xca - .endm - - @ Ends the effects of signmsg, returning message box frames to normal. - .macro normalmsg - .byte 0xcb - .endm - - @ Compares the value of a hidden variable to a dword. - .macro comparehiddenvar a, value - .byte 0xcc - .byte \a - .4byte \value - .endm - -@ Supplementary - - .macro goto_if_trainer_not_defeated opponent, dest - checktrainerflag \opponent - goto_if 0, \dest - .endm - - .macro goto_if_trainer_defeated opponent, dest - checktrainerflag \opponent - goto_if 1, \dest - .endm - - .macro call_if_trainer_not_defeated opponent, dest - checktrainerflag \opponent - call_if 0, \dest - .endm - - .macro call_if_trainer_defeated opponent, dest - checktrainerflag \opponent - call_if 1, \dest - .endm - - .macro goto_if_unset flag, dest - checkflag \flag - goto_if 0, \dest - .endm - - .macro goto_if_set flag, dest - checkflag \flag - goto_if 1, \dest - .endm - - .macro goto_if_lt dest @ LESS THAN - goto_if 0, \dest - .endm - - .macro goto_if_eq dest @ EQUAL - goto_if 1, \dest - .endm - - .macro goto_if_gt dest @ GREATER THAN - goto_if 2, \dest - .endm - - .macro goto_if_le dest @ LESS THAN OR EQUAL - goto_if 3, \dest - .endm - - .macro goto_if_ge dest @ GREATER THAN OR EQUAL - goto_if 4, \dest - .endm - - .macro goto_if_ne dest @ NOT EQUAL - goto_if 5, \dest - .endm - - .macro call_if_unset flag, dest - checkflag \flag - call_if 0, \dest - .endm - - .macro call_if_set flag, dest - checkflag \flag - call_if 1, \dest - .endm - - .macro call_if_lt dest @ LESS THAN - call_if 0, \dest - .endm - - .macro call_if_eq dest @ EQUAL - call_if 1, \dest - .endm - - .macro call_if_gt dest @ GREATER THAN - call_if 2, \dest - .endm - - .macro call_if_le dest @ LESS THAN OR EQUAL - call_if 3, \dest - .endm - - .macro call_if_ge dest @ GREATER THAN OR EQUAL - call_if 4, \dest - .endm - - .macro call_if_ne dest @ NOT EQUAL - call_if 5, \dest - .endm - - .macro switch var - copyvar VAR_SPECIAL_0, \var - .endm - - .macro case condition, dest - compare_var_to_value VAR_SPECIAL_0, \condition - goto_if_eq \dest - .endm - - .macro msgbox text, type=4 - loadword 0, \text - callstd \type - .endm - - @ Message box types - MSGBOX_YESNO = 5 - - YES = 1 - NO = 0 - - .macro giveitem_std item, amount=1, function=0 - setorcopyvar VAR_SPECIAL_0, \item - setorcopyvar VAR_SPECIAL_1, \amount - callstd \function - .endm - - .macro givedecoration_std decoration - setorcopyvar VAR_SPECIAL_0, \decoration - callstd 7 - .endm diff --git a/asm/macros/field_effect_script.inc b/asm/macros/field_effect_script.inc deleted file mode 100644 index d5895b0ef..000000000 --- a/asm/macros/field_effect_script.inc +++ /dev/null @@ -1,42 +0,0 @@ - .macro loadtiles address - .byte 0 - .4byte \address - .endm - - .macro loadfadedpal address - .byte 1 - .4byte \address - .endm - - .macro loadpal address - .byte 2 - .4byte \address - .endm - - .macro callnative address - .byte 3 - .4byte \address - .endm - - .macro end - .byte 4 - .endm - - .macro loadgfx_callnative tiles_address, palette_address, function_address - .byte 5 - .4byte \tiles_address - .4byte \palette_address - .4byte \function_address - .endm - - .macro loadtiles_callnative tiles_address, function_address - .byte 6 - .4byte \tiles_address - .4byte \function_address - .endm - - .macro loadfadedpal_callnative palette_address, function_address - .byte 7 - .4byte \palette_address - .4byte \function_address - .endm diff --git a/asm/macros/function.inc b/asm/macros/function.inc deleted file mode 100644 index 67fb373a8..000000000 --- a/asm/macros/function.inc +++ /dev/null @@ -1,29 +0,0 @@ - .macro arm_func_start name - .align 2, 0 - .global \name - .arm - .type \name, function - .endm - - .macro arm_func_end name - .size \name, .-\name - .endm - - .macro thumb_func_start name - .align 2, 0 - .global \name - .thumb - .thumb_func - .type \name, function - .endm - - .macro non_word_aligned_thumb_func_start name - .global \name - .thumb - .thumb_func - .type \name, function - .endm - - .macro thumb_func_end name - .size \name, .-\name - .endm diff --git a/asm/macros/m4a.inc b/asm/macros/m4a.inc deleted file mode 100644 index 6c5abc09b..000000000 --- a/asm/macros/m4a.inc +++ /dev/null @@ -1,13 +0,0 @@ - .macro song label, music_player, unknown - .4byte \label - .2byte \music_player - .2byte \unknown - .endm - - .macro music_player info_struct, track_struct, unknown_1, unknown_2 - .4byte \info_struct - .4byte \track_struct - .byte \unknown_1 - .space 1 - .2byte \unknown_2 - .endm diff --git a/asm/macros/map.inc b/asm/macros/map.inc deleted file mode 100644 index db37d9346..000000000 --- a/asm/macros/map.inc +++ /dev/null @@ -1,96 +0,0 @@ - .macro map map_id - .byte \map_id >> 8 @ map group - .byte \map_id & 0xFF @ map num - .endm - - .macro map_script type, address - .byte \type - .4byte \address - .endm - - .macro map_script_2 word1, word2, address - .2byte \word1 - .2byte \word2 - .4byte \address - .endm - - .macro object_event byte1, word1, byte2, byte3, byte4, byte5, byte6, byte7, byte8, byte9, byte10, byte11, byte12, byte13, byte14, script, word2, byte15, byte16 - .byte \byte1 - .2byte \word1 - .byte \byte2, \byte3, \byte4, \byte5, \byte6, \byte7, \byte8, \byte9, \byte10, \byte11, \byte12, \byte13, \byte14 - .4byte \script - .2byte \word2 - .byte \byte15, \byte16 - inc _num_npcs - .endm - - .macro warp_def x, y, byte, warp, map_id - .2byte \x, \y - .byte \byte, \warp - .byte \map_id & 0xFF @ map num - .byte \map_id >> 8 @ map group - inc _num_warps - .endm - - .macro coord_event x, y, byte1, byte2, word1, word2, word3, script - .2byte \x, \y - .byte \byte1, \byte2 - .2byte \word1, \word2, \word3 - .4byte \script - inc _num_traps - .endm - - .macro coord_weather_event x, y, height, weather - coord_event \x, \y, \height, 0, \weather, 0, 0, 0x0 - .endm - - .macro bg_event x, y, byte, kind, word, arg6, arg7, arg8 - .2byte \x, \y - .byte \byte, \kind - .2byte \word - .if \kind < 5 - .4byte \arg6 - .else - .2byte \arg6 - .byte \arg7, \arg8 - .endif - inc _num_signs - .endm - - .macro bg_hidden_item_event x, y, height, item, flag - bg_event \x, \y, \height, 7, 0, \item, ((\flag) - FLAG_HIDDEN_ITEMS_START), 0 - .endm - - .macro bg_secret_base_event x, y, height, secret_base_id - bg_event \x, \y, \height, 8, 0, \secret_base_id, 0, 0 - .endm - - .macro map_events npcs, warps, traps, signs - .byte _num_npcs, _num_warps, _num_traps, _num_signs - .4byte \npcs, \warps, \traps, \signs - reset_map_events - .endm - - .macro reset_map_events - .set _num_npcs, 0 - .set _num_warps, 0 - .set _num_traps, 0 - .set _num_signs, 0 - .endm - - reset_map_events - - - .equiv connection_down, 1 - .equiv connection_up, 2 - .equiv connection_left, 3 - .equiv connection_right, 4 - .equiv connection_dive, 5 - .equiv connection_emerge, 6 - - .macro connection direction, offset, map, filler - .4byte connection_\direction - .4byte \offset - map \map - .space 2 - .endm diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc deleted file mode 100644 index 674ce7169..000000000 --- a/asm/macros/movement.inc +++ /dev/null @@ -1,116 +0,0 @@ - .macro create_movement name - enum _\name - .macro \name - .byte _\name - .endm - .endm - - enum_start - create_movement step_00 - create_movement step_01 - create_movement step_02 - create_movement step_03 - create_movement slow_step_down - create_movement slow_step_up - create_movement slow_step_left - create_movement slow_step_right - create_movement step_down - create_movement step_up - create_movement step_left - create_movement step_right - create_movement fast_step_down - create_movement fast_step_up - create_movement fast_step_left - create_movement fast_step_right - create_movement step_10 - create_movement step_11 - create_movement step_12 - create_movement step_13 - create_movement step_14 - create_movement step_15 - create_movement step_16 - create_movement step_17 - create_movement step_18 - create_movement step_19 - create_movement step_1a - create_movement step_1b - create_movement step_1c - create_movement step_1d - create_movement step_1e - create_movement step_1f - create_movement step_20 - create_movement step_21 - create_movement step_22 - create_movement step_23 - create_movement step_24 - create_movement step_25 - create_movement step_26 - create_movement step_27 - create_movement step_28 - create_movement step_29 - create_movement step_2a - create_movement step_2b - create_movement step_2c - create_movement step_2d - create_movement step_2e - create_movement step_2f - create_movement step_30 - create_movement step_31 - create_movement step_32 - create_movement step_33 - create_movement step_34 - create_movement step_35 - create_movement step_36 - create_movement step_37 - create_movement step_38 - create_movement step_39 - create_movement step_3a - create_movement step_3b - create_movement step_3c - create_movement step_3d - create_movement step_3e - create_movement step_3f - create_movement step_40 - create_movement step_41 - create_movement step_42 - create_movement step_43 - create_movement step_44 - create_movement step_45 - create_movement step_46 - create_movement step_47 - create_movement step_48 - create_movement step_49 - create_movement step_4a - create_movement step_4b - create_movement step_4c - create_movement step_4d - create_movement step_4e - create_movement step_4f - create_movement step_50 - create_movement step_51 - create_movement step_52 - create_movement step_53 - create_movement step_54 - create_movement step_55 - create_movement step_56 - create_movement step_57 - create_movement step_58 - create_movement step_59 - create_movement step_5a - create_movement step_5b - create_movement step_5c - create_movement step_5d - create_movement step_5e - create_movement step_5f - create_movement step_60 - create_movement step_61 - - enum_start 0x91 - create_movement step_91 - create_movement step_92 - - enum_start 0x96 - create_movement step_96 - - enum_start 0xfe - create_movement step_end diff --git a/asm/macros/music_voice.inc b/asm/macros/music_voice.inc deleted file mode 100644 index b7a9e7f8d..000000000 --- a/asm/macros/music_voice.inc +++ /dev/null @@ -1,125 +0,0 @@ - .macro voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release - .byte 0 - _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release - .endm - - .macro voice_directsound_no_resample base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release - .byte 8 - _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release - .endm - - .macro voice_directsound_alt base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release - .byte 16 - _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release - .endm - - .macro _voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release - .byte \base_midi_key - .byte 0 - .if \pan != 0 - .byte (0x80 | \pan) - .else - .byte 0 - .endif - .4byte \sample_data_pointer - .byte \attack - .byte \decay - .byte \sustain - .byte \release - .endm - - .macro voice_square_1 sweep, duty_cycle, attack, decay, sustain, release - _voice_square_1 1, \sweep, \duty_cycle, \attack, \decay, \sustain, \release - .endm - - .macro voice_square_1_alt sweep, duty_cycle, attack, decay, sustain, release - _voice_square_1 9, \sweep, \duty_cycle, \attack, \decay, \sustain, \release - .endm - - .macro _voice_square_1 type, sweep, duty_cycle, attack, decay, sustain, release - .byte \type, 60, 0 - .byte \sweep - .byte (\duty_cycle & 0x3) - .byte 0, 0, 0 - .byte (\attack & 0x7) - .byte (\decay & 0x7) - .byte (\sustain & 0xF) - .byte (\release & 0x7) - .endm - - .macro voice_square_2 duty_cycle, attack, decay, sustain, release - _voice_square_2 2, \duty_cycle, \attack, \decay, \sustain, \release - .endm - - .macro voice_square_2_alt duty_cycle, attack, decay, sustain, release - _voice_square_2 10, \duty_cycle, \attack, \decay, \sustain, \release - .endm - - .macro _voice_square_2 type, duty_cycle, attack, decay, sustain, release - .byte \type, 60, 0, 0 - .byte (\duty_cycle & 0x3) - .byte 0, 0, 0 - .byte (\attack & 0x7) - .byte (\decay & 0x7) - .byte (\sustain & 0xF) - .byte (\release & 0x7) - .endm - - .macro voice_programmable_wave wave_samples_pointer, attack, decay, sustain, release - _voice_programmable_wave 3, \wave_samples_pointer, \attack, \decay, \sustain, \release - .endm - - .macro voice_programmable_wave_alt wave_samples_pointer, attack, decay, sustain, release - _voice_programmable_wave 11, \wave_samples_pointer, \attack, \decay, \sustain, \release - .endm - - .macro _voice_programmable_wave type, wave_samples_pointer, attack, decay, sustain, release - .byte \type, 60, 0, 0 - .4byte \wave_samples_pointer - .byte (\attack & 0x7) - .byte (\decay & 0x7) - .byte (\sustain & 0xF) - .byte (\release & 0x7) - .endm - - .macro voice_noise period, attack, decay, sustain, release - _voice_noise 4, \period, \attack, \decay, \sustain, \release - .endm - - .macro voice_noise_alt period, attack, decay, sustain, release - _voice_noise 12, \period, \attack, \decay, \sustain, \release - .endm - - .macro _voice_noise type, period, attack, decay, sustain, release - .byte \type, 60, 0, 0 - .byte (\period & 0x1) - .byte 0, 0, 0 - .byte (\attack & 0x7) - .byte (\decay & 0x7) - .byte (\sustain & 0xF) - .byte (\release & 0x7) - .endm - - .macro voice_keysplit voice_group_pointer, keysplit_table_pointer - .byte 0x40, 0, 0, 0 - .4byte \voice_group_pointer - .4byte \keysplit_table_pointer - .endm - - .macro voice_keysplit_all voice_group_pointer - .byte 0x80, 0, 0, 0 - .4byte \voice_group_pointer - .4byte 0 - .endm - - .macro cry sample - .byte 0x20, 60, 0, 0 - .4byte \sample - .byte 0xff, 0, 0xff, 0 - .endm - - .macro cry2 sample - .byte 0x30, 60, 0, 0 - .4byte \sample - .byte 0xff, 0, 0xff, 0 - .endm diff --git a/asm/macros/pokemon_data.inc b/asm/macros/pokemon_data.inc deleted file mode 100644 index b0a5f22e3..000000000 --- a/asm/macros/pokemon_data.inc +++ /dev/null @@ -1,57 +0,0 @@ - .macro pokedex_entry pokemon_name, height, weight, pokemon_scale, pokemon_offset, trainer_scale, trainer_offset - .2byte \height @ in decimeters - .2byte \weight @ in hectograms - .4byte DexDescription_\pokemon_name\()_1 - .4byte DexDescription_\pokemon_name\()_2 - .2byte 0 @ unused - .2byte \pokemon_scale - .2byte \pokemon_offset - .2byte \trainer_scale - .2byte \trainer_offset - .2byte 0 @ padding - .endm - - .macro base_stats hp, attack, defense, speed, sp_attack, sp_defense - .byte \hp - .byte \attack - .byte \defense - .byte \speed - .byte \sp_attack - .byte \sp_defense - .endm - - .macro ev_yield hp, attack, defense, speed, sp_attack, sp_defense - .2byte (\sp_defense << 10) | (\sp_attack << 8) | (\speed << 6) | (\defense << 4) | (\attack << 2) | \hp - .endm - - .macro level_up_move level, move - .2byte (\level << 9) | \move - .endm - - .macro evo_entry method, parameter, target_species - .2byte \method - .2byte \parameter - .2byte \target_species - .2byte 0 @ padding - .endm - - .macro empty_evo_entries count - .fill 8 * \count, 1, 0 - .endm - - .macro egg_moves_begin species - .2byte 20000 + \species - .endm - -@ If the min level equals the max level, only one level argument is needed. - .macro wild_mon species, min_level, max_level - .byte \min_level - - .ifb \max_level - .byte \min_level - .else - .byte \max_level - .endif - - .2byte SPECIES_\species - .endm diff --git a/asm/normal.s b/asm/normal.s index 8465e2c2b..fffbc3870 100755 --- a/asm/normal.s +++ b/asm/normal.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/pc_screen_effect.s b/asm/pc_screen_effect.s index 665978d19..9d36df66c 100755 --- a/asm/pc_screen_effect.s +++ b/asm/pc_screen_effect.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index fd5555524..779a5a0ed 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/pokedex_cry_screen.s b/asm/pokedex_cry_screen.s index 5eea28b99..00f8cfe14 100644 --- a/asm/pokedex_cry_screen.s +++ b/asm/pokedex_cry_screen.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s index a8b8fa401..6995dc62b 100644 --- a/asm/pokemon_item_effect.s +++ b/asm/pokemon_item_effect.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index d878821cb..2ac873fcd 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/pokenav.s b/asm/pokenav.s index 67b4ece33..ca65b2e06 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/psychic.s b/asm/psychic.s index 7dbedd08f..f91ce950e 100755 --- a/asm/psychic.s +++ b/asm/psychic.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/rock.s b/asm/rock.s index 2f878db2c..98afb53e6 100755 --- a/asm/rock.s +++ b/asm/rock.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/unk_text_8095904.s b/asm/unk_text_8095904.s index f144eab26..00c81faca 100755 --- a/asm/unk_text_8095904.s +++ b/asm/unk_text_8095904.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/asm/water.s b/asm/water.s index 56e552241..45fb7f82a 100755 --- a/asm/water.s +++ b/asm/water.s @@ -1,5 +1,5 @@ .include "constants/gba_constants.inc" - .include "asm/macros.inc" + .include "include/macros.inc" .syntax unified diff --git a/config.mk b/config.mk new file mode 100644 index 000000000..f0ad39f5b --- /dev/null +++ b/config.mk @@ -0,0 +1,44 @@ +### Build Configuration ### + +# Default variables +VERSION ?= RUBY +REVISION ?= 0 +LANGUAGE ?= ENGLISH +COMPARE ?= 1 + +# Version +ifeq ($(VERSION), RUBY) + BUILD_NAME := ruby +else +ifeq ($(VERSION), SAPPHIRE) + BUILD_NAME := sapphire +else + $(error unknown version $(VERSION)) +endif +endif + +# Revision +ifeq ($(REVISION), 0) + BUILD_NAME := $(BUILD_NAME) +else +ifeq ($(REVISION), 1) + BUILD_NAME := $(BUILD_NAME)_rev1 +else +ifeq ($(REVISION), 2) + BUILD_NAME := $(BUILD_NAME)_rev2 +else + $(error unknown revision $(REVISION)) +endif +endif +endif + +# Language +ifeq ($(LANGUAGE), ENGLISH) + BUILD_NAME := $(BUILD_NAME) +else +ifeq ($(LANGUAGE), GERMAN) + BUILD_NAME := $(BUILD_NAME)_de +else + $(error unknown language $(LANGUAGE)) +endif +endif diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s index 18fb0a64d..1569e87c6 100644 --- a/data-de/event_scripts.s +++ b/data-de/event_scripts.s @@ -10,8 +10,8 @@ #include "constants/species.h" #include "constants/weather.h" #include "constants/vars.h" - .include "asm/macros.inc" - .include "asm/macros/event.inc" + .include "include/macros.inc" + .include "include/macros/event.inc" .include "constants/constants.inc" .section script_data, "aw", %progbits diff --git a/data-de/strings2.s b/data-de/strings2.s index f15c039aa..52e964938 100644 --- a/data-de/strings2.s +++ b/data-de/strings2.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index 270386359..17b27fae5 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -3,9 +3,9 @@ #include "constants/hold_effects.h" #include "constants/items.h" #include "constants/moves.h" - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" - .include "asm/macros/battle_ai_script.inc" + .include "include/macros/battle_ai_script.inc" .section script_data, "aw", %progbits diff --git a/data/battle_anim.s b/data/battle_anim.s index ed880ba77..270ba818a 100644 --- a/data/battle_anim.s +++ b/data/battle_anim.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/battle_anim_80A7E7C.s b/data/battle_anim_80A7E7C.s index d7da20315..395b2e0ab 100644 --- a/data/battle_anim_80A7E7C.s +++ b/data/battle_anim_80A7E7C.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s index 4430cd372..8f62d92f6 100644 --- a/data/battle_anim_80CA710.s +++ b/data/battle_anim_80CA710.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/battle_anim_812C144.s b/data/battle_anim_812C144.s index 188173252..dc0ebf9e3 100644 --- a/data/battle_anim_812C144.s +++ b/data/battle_anim_812C144.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/battle_anim_813F0F4.s b/data/battle_anim_813F0F4.s index de29622ad..fd24d95b6 100644 --- a/data/battle_anim_813F0F4.s +++ b/data/battle_anim_813F0F4.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index e0d11637d..2068db4ff 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1,6 +1,6 @@ #include "constants/songs.h" - .include "asm/macros.inc" - .include "asm/macros/battle_anim.inc" + .include "include/macros.inc" + .include "include/macros/battle_anim.inc" .include "constants/constants.inc" .section script_data, "aw", %progbits diff --git a/data/battle_interface.s b/data/battle_interface.s index 040b1b9d3..3c79b9f4b 100644 --- a/data/battle_interface.s +++ b/data/battle_interface.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/battle_moves.s b/data/battle_moves.s index 2c65bd3a5..b56457a96 100644 --- a/data/battle_moves.s +++ b/data/battle_moves.s @@ -1,6 +1,6 @@ #include "constants/battle_constants.h" #include "constants/battle_move_effects.h" - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 41edcb514..b04ebefe5 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2,8 +2,8 @@ #include "constants/battle_constants.h" #include "constants/moves.h" #include "constants/songs.h" - .include "asm/macros.inc" - .include "asm/macros/battle_script.inc" + .include "include/macros.inc" + .include "include/macros/battle_script.inc" .include "constants/constants.inc" .include "constants/battle_script_constants.inc" diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index e113513d6..2c5c391ad 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -1,8 +1,8 @@ #include "constants/battle_constants.h" #include "constants/items.h" #include "constants/songs.h" - .include "asm/macros.inc" - .include "asm/macros/battle_script.inc" + .include "include/macros.inc" + .include "include/macros/battle_script.inc" .include "constants/constants.inc" .include "constants/battle_script_constants.inc" diff --git a/data/contest.s b/data/contest.s index 0ffcfc636..63988987d 100644 --- a/data/contest.s +++ b/data/contest.s @@ -1,6 +1,6 @@ #include "constants/moves.h" #include "constants/species.h" - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/contest_ai.s b/data/contest_ai.s index 78f926df3..af13f50f8 100644 --- a/data/contest_ai.s +++ b/data/contest_ai.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index 2c709ba09..b0b74c584 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -1,5 +1,5 @@ - .include "asm/macros.inc" - .include "asm/macros/contest_ai_script.inc" + .include "include/macros.inc" + .include "include/macros/contest_ai_script.inc" .include "constants/constants.inc" .section script_data, "aw", %progbits diff --git a/data/contest_effect.s b/data/contest_effect.s index 7bcb36bf1..cd960fb52 100644 --- a/data/contest_effect.s +++ b/data/contest_effect.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/contest_link_80C2020.s b/data/contest_link_80C2020.s index 0b74e5908..f0ad06a32 100644 --- a/data/contest_link_80C2020.s +++ b/data/contest_link_80C2020.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/cute_sketch.s b/data/cute_sketch.s index b59a4b804..e3e75753d 100644 --- a/data/cute_sketch.s +++ b/data/cute_sketch.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/data2a.s b/data/data2a.s index bd455ce29..c4d6343d8 100644 --- a/data/data2a.s +++ b/data/data2a.s @@ -3,7 +3,7 @@ #include "constants/items.h" #include "constants/moves.h" #include "constants/species.h" - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/data2b.s b/data/data2b.s index e82e221c1..c7cd4dfcf 100644 --- a/data/data2b.s +++ b/data/data2b.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/data_8393054.s b/data/data_8393054.s index 5d2f79e07..38ba47b63 100644 --- a/data/data_8393054.s +++ b/data/data_8393054.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/easy_chat.s b/data/easy_chat.s index d41ffccce..bece4a499 100644 --- a/data/easy_chat.s +++ b/data/easy_chat.s @@ -1,7 +1,7 @@ #include "constants/easy_chat.h" #include "constants/moves.h" #include "constants/species.h" - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" #define EC_DUPLICATES(count) (0xFF00 + (count)) diff --git a/data/event_scripts.s b/data/event_scripts.s index 1c8cff8d6..3b25ceab4 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -10,8 +10,8 @@ #include "constants/species.h" #include "constants/weather.h" #include "constants/vars.h" - .include "asm/macros.inc" - .include "asm/macros/event.inc" + .include "include/macros.inc" + .include "include/macros/event.inc" .include "constants/constants.inc" .section script_data, "aw", %progbits diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 900cc7009..45f8ce648 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -1,5 +1,5 @@ - .include "asm/macros.inc" - .include "asm/macros/field_effect_script.inc" + .include "include/macros.inc" + .include "include/macros/field_effect_script.inc" .include "constants/constants.inc" .section script_data, "aw", %progbits diff --git a/data/map_events.s b/data/map_events.s index a06eb36d0..1531ec30e 100644 --- a/data/map_events.s +++ b/data/map_events.s @@ -5,7 +5,7 @@ #include "constants/secret_bases.h" #include "constants/vars.h" #include "constants/weather.h" - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/maps.s b/data/maps.s index 92f5544a1..727a48d0f 100644 --- a/data/maps.s +++ b/data/maps.s @@ -1,6 +1,6 @@ #include "constants/maps.h" #include "constants/songs.h" - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/pc_screen_effect.s b/data/pc_screen_effect.s index c33957945..1d6571149 100755 --- a/data/pc_screen_effect.s +++ b/data/pc_screen_effect.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/pokedex_area_screen.s b/data/pokedex_area_screen.s index 0d15169d0..410f0d4c5 100644 --- a/data/pokedex_area_screen.s +++ b/data/pokedex_area_screen.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/pokedex_cry_screen.s b/data/pokedex_cry_screen.s index 0908ddacb..14ea1cfb8 100644 --- a/data/pokedex_cry_screen.s +++ b/data/pokedex_cry_screen.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s index b765656f7..a3b7494dc 100644 --- a/data/pokemon_storage_system.s +++ b/data/pokemon_storage_system.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/pokenav.s b/data/pokenav.s index f84e45596..cb0e98472 100644 --- a/data/pokenav.s +++ b/data/pokenav.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/roulette.s b/data/roulette.s index 64b7b82e2..d19508fc3 100644 --- a/data/roulette.s +++ b/data/roulette.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/sound_data.s b/data/sound_data.s index cd33950e1..fff724e68 100644 --- a/data/sound_data.s +++ b/data/sound_data.s @@ -1,7 +1,7 @@ .section .rodata - .include "asm/macros/m4a.inc" - .include "asm/macros/music_voice.inc" + .include "include/macros/m4a.inc" + .include "include/macros/music_voice.inc" .include "sound/voice_groups.inc" .include "sound/keysplit_tables.inc" diff --git a/data/strings2.s b/data/strings2.s index cece71645..f73aba76f 100644 --- a/data/strings2.s +++ b/data/strings2.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/data/tilesets.s b/data/tilesets.s index 443686234..d9933dbf9 100644 --- a/data/tilesets.s +++ b/data/tilesets.s @@ -1,4 +1,4 @@ - .include "asm/macros.inc" + .include "include/macros.inc" .include "constants/constants.inc" .section .rodata diff --git a/fonts.mk b/fonts.mk index 86b7f4591..687c4ae2e 100644 --- a/fonts.mk +++ b/fonts.mk @@ -1,5 +1,3 @@ -RSFONT := tools/rsfont/rsfont - graphics/fonts/font0_jpn.1bpp: graphics/fonts/font0_jpn.png $(RSFONT) $< $@ 240 1 diff --git a/include/MPlayDef.s b/include/MPlayDef.s new file mode 100644 index 000000000..f5dd6484d --- /dev/null +++ b/include/MPlayDef.s @@ -0,0 +1,430 @@ + .equ W00, 0x80 @ WAIT + .equ W01, W00+1 @ + .equ W02, W00+2 @ + .equ W03, W00+3 @ + .equ W04, W00+4 @ + .equ W05, W00+5 @ + .equ W06, W00+6 @ + .equ W07, W00+7 @ + .equ W08, W00+8 @ + .equ W09, W00+9 @ + .equ W10, W00+10 @ + .equ W11, W00+11 @ + .equ W12, W00+12 @ + .equ W13, W00+13 @ + .equ W14, W00+14 @ + .equ W15, W00+15 @ + .equ W16, W00+16 @ + .equ W17, W00+17 @ + .equ W18, W00+18 @ + .equ W19, W00+19 @ + .equ W20, W00+20 @ + .equ W21, W00+21 @ + .equ W22, W00+22 @ + .equ W23, W00+23 @ + .equ W24, W00+24 @ + .equ W28, W00+25 @ + .equ W30, W00+26 @ + .equ W32, W00+27 @ + .equ W36, W00+28 @ + .equ W40, W00+29 @ + .equ W42, W00+30 @ + .equ W44, W00+31 @ + .equ W48, W00+32 @ + .equ W52, W00+33 @ + .equ W54, W00+34 @ + .equ W56, W00+35 @ + .equ W60, W00+36 @ + .equ W64, W00+37 @ + .equ W66, W00+38 @ + .equ W68, W00+39 @ + .equ W72, W00+40 @ + .equ W76, W00+41 @ + .equ W78, W00+42 @ + .equ W80, W00+43 @ + .equ W84, W00+44 @ + .equ W88, W00+45 @ + .equ W90, W00+46 @ + .equ W92, W00+47 @ + .equ W96, W00+48 @ + + .equ FINE, 0xb1 @ fine + .equ GOTO, 0xb2 @ goto + .equ PATT, 0xb3 @ pattern play + .equ PEND, 0xb4 @ pattern end + .equ REPT, 0xb5 @ repeat + .equ MEMACC, 0xb9 @ memacc op adr dat ***lib + .equ PRIO, 0xba @ priority + .equ TEMPO, 0xbb @ tempo (BPM/2) + .equ KEYSH, 0xbc @ key shift + .equ VOICE, 0xbd @ voice # + .equ VOL, 0xbe @ volume + .equ PAN, 0xbf @ panpot (c_v+??) + .equ BEND, 0xc0 @ pitch bend (c_v+??) + .equ BENDR, 0xc1 @ bend range + .equ LFOS, 0xc2 @ LFO speed + .equ LFODL, 0xc3 @ LFO delay + .equ MOD, 0xc4 @ modulation depth + .equ MODT, 0xc5 @ modulation type + .equ TUNE, 0xc8 @ micro tuning (c_v+??) + + .equ XCMD, 0xcd @ extend command ***lib + .equ xIECV, 0x08 @ imi.echo vol ***lib + .equ xIECL, 0x09 @ imi.echo len ***lib + + .equ EOT, 0xce @ End of Tie + .equ TIE, 0xcf @ + .equ N01, TIE+1 @ NOTE + .equ N02, N01+1 @ + .equ N03, N01+2 @ + .equ N04, N01+3 @ + .equ N05, N01+4 @ + .equ N06, N01+5 @ + .equ N07, N01+6 @ + .equ N08, N01+7 @ + .equ N09, N01+8 @ + .equ N10, N01+9 @ + .equ N11, N01+10 @ + .equ N12, N01+11 @ + .equ N13, N01+12 @ + .equ N14, N01+13 @ + .equ N15, N01+14 @ + .equ N16, N01+15 @ + .equ N17, N01+16 @ + .equ N18, N01+17 @ + .equ N19, N01+18 @ + .equ N20, N01+19 @ + .equ N21, N01+20 @ + .equ N22, N01+21 @ + .equ N23, N01+22 @ + .equ N24, N01+23 @ + .equ N28, N01+24 @ + .equ N30, N01+25 @ + .equ N32, N01+26 @ + .equ N36, N01+27 @ + .equ N40, N01+28 @ + .equ N42, N01+29 @ + .equ N44, N01+30 @ + .equ N48, N01+31 @ + .equ N52, N01+32 @ + .equ N54, N01+33 @ + .equ N56, N01+34 @ + .equ N60, N01+35 @ + .equ N64, N01+36 @ + .equ N66, N01+37 @ + .equ N68, N01+38 @ + .equ N72, N01+39 @ + .equ N76, N01+40 @ + .equ N78, N01+41 @ + .equ N80, N01+42 @ + .equ N84, N01+43 @ + .equ N88, N01+44 @ + .equ N90, N01+45 @ + .equ N92, N01+46 @ + .equ N96, N01+47 @ + +@ maximum value for volume + + .equ mxv, 0x7F @ + +@ center value of PAN, BEND, TUNE + + .equ c_v, 0x40 @ -64 ~ +63 + +@ note for N??, TIE, EOT + + .equ CnM2, 0 @ + .equ CsM2, 1 @ + .equ DnM2, 2 @ + .equ DsM2, 3 @ + .equ EnM2, 4 @ + .equ FnM2, 5 @ + .equ FsM2, 6 @ + .equ GnM2, 7 @ + .equ GsM2, 8 @ + .equ AnM2, 9 @ + .equ AsM2, 10 @ + .equ BnM2, 11 @ + .equ CnM1, 12 @ + .equ CsM1, 13 @ + .equ DnM1, 14 @ + .equ DsM1, 15 @ + .equ EnM1, 16 @ + .equ FnM1, 17 @ + .equ FsM1, 18 @ + .equ GnM1, 19 @ + .equ GsM1, 20 @ + .equ AnM1, 21 @ + .equ AsM1, 22 @ + .equ BnM1, 23 @ + .equ Cn0, 24 @ + .equ Cs0, 25 @ + .equ Dn0, 26 @ + .equ Ds0, 27 @ + .equ En0, 28 @ + .equ Fn0, 29 @ + .equ Fs0, 30 @ + .equ Gn0, 31 @ + .equ Gs0, 32 @ + .equ An0, 33 @ + .equ As0, 34 @ + .equ Bn0, 35 @ + .equ Cn1, 36 @ + .equ Cs1, 37 @ + .equ Dn1, 38 @ + .equ Ds1, 39 @ + .equ En1, 40 @ + .equ Fn1, 41 @ + .equ Fs1, 42 @ + .equ Gn1, 43 @ + .equ Gs1, 44 @ + .equ An1, 45 @ + .equ As1, 46 @ + .equ Bn1, 47 @ + .equ Cn2, 48 @ + .equ Cs2, 49 @ + .equ Dn2, 50 @ + .equ Ds2, 51 @ + .equ En2, 52 @ + .equ Fn2, 53 @ + .equ Fs2, 54 @ + .equ Gn2, 55 @ + .equ Gs2, 56 @ + .equ An2, 57 @ + .equ As2, 58 @ + .equ Bn2, 59 @ + .equ Cn3, 60 @ + .equ Cs3, 61 @ + .equ Dn3, 62 @ + .equ Ds3, 63 @ + .equ En3, 64 @ + .equ Fn3, 65 @ + .equ Fs3, 66 @ + .equ Gn3, 67 @ + .equ Gs3, 68 @ + .equ An3, 69 @ 440Hz + .equ As3, 70 @ + .equ Bn3, 71 @ + .equ Cn4, 72 @ + .equ Cs4, 73 @ + .equ Dn4, 74 @ + .equ Ds4, 75 @ + .equ En4, 76 @ + .equ Fn4, 77 @ + .equ Fs4, 78 @ + .equ Gn4, 79 @ + .equ Gs4, 80 @ + .equ An4, 81 @ + .equ As4, 82 @ + .equ Bn4, 83 @ + .equ Cn5, 84 @ + .equ Cs5, 85 @ + .equ Dn5, 86 @ + .equ Ds5, 87 @ + .equ En5, 88 @ + .equ Fn5, 89 @ + .equ Fs5, 90 @ + .equ Gn5, 91 @ + .equ Gs5, 92 @ + .equ An5, 93 @ + .equ As5, 94 @ + .equ Bn5, 95 @ + .equ Cn6, 96 @ + .equ Cs6, 97 @ + .equ Dn6, 98 @ + .equ Ds6, 99 @ + .equ En6, 100 @ + .equ Fn6, 101 @ + .equ Fs6, 102 @ + .equ Gn6, 103 @ + .equ Gs6, 104 @ + .equ An6, 105 @ + .equ As6, 106 @ + .equ Bn6, 107 @ + .equ Cn7, 108 @ + .equ Cs7, 109 @ + .equ Dn7, 110 @ + .equ Ds7, 111 @ + .equ En7, 112 @ + .equ Fn7, 113 @ + .equ Fs7, 114 @ + .equ Gn7, 115 @ + .equ Gs7, 116 @ + .equ An7, 117 @ + .equ As7, 118 @ + .equ Bn7, 119 @ + .equ Cn8, 120 @ + .equ Cs8, 121 @ + .equ Dn8, 122 @ + .equ Ds8, 123 @ + .equ En8, 124 @ + .equ Fn8, 125 @ + .equ Fs8, 126 @ + .equ Gn8, 127 @ + +@ velocity + + .equ v000, 0 @ + .equ v001, 1 @ + .equ v002, 2 @ + .equ v003, 3 @ + .equ v004, 4 @ + .equ v005, 5 @ + .equ v006, 6 @ + .equ v007, 7 @ + .equ v008, 8 @ + .equ v009, 9 @ + .equ v010, 10 @ + .equ v011, 11 @ + .equ v012, 12 @ + .equ v013, 13 @ + .equ v014, 14 @ + .equ v015, 15 @ + .equ v016, 16 @ + .equ v017, 17 @ + .equ v018, 18 @ + .equ v019, 19 @ + .equ v020, 20 @ + .equ v021, 21 @ + .equ v022, 22 @ + .equ v023, 23 @ + .equ v024, 24 @ + .equ v025, 25 @ + .equ v026, 26 @ + .equ v027, 27 @ + .equ v028, 28 @ + .equ v029, 29 @ + .equ v030, 30 @ + .equ v031, 31 @ + .equ v032, 32 @ + .equ v033, 33 @ + .equ v034, 34 @ + .equ v035, 35 @ + .equ v036, 36 @ + .equ v037, 37 @ + .equ v038, 38 @ + .equ v039, 39 @ + .equ v040, 40 @ + .equ v041, 41 @ + .equ v042, 42 @ + .equ v043, 43 @ + .equ v044, 44 @ + .equ v045, 45 @ + .equ v046, 46 @ + .equ v047, 47 @ + .equ v048, 48 @ + .equ v049, 49 @ + .equ v050, 50 @ + .equ v051, 51 @ + .equ v052, 52 @ + .equ v053, 53 @ + .equ v054, 54 @ + .equ v055, 55 @ + .equ v056, 56 @ + .equ v057, 57 @ + .equ v058, 58 @ + .equ v059, 59 @ + .equ v060, 60 @ + .equ v061, 61 @ + .equ v062, 62 @ + .equ v063, 63 @ + .equ v064, 64 @ + .equ v065, 65 @ + .equ v066, 66 @ + .equ v067, 67 @ + .equ v068, 68 @ + .equ v069, 79 @ + .equ v070, 70 @ + .equ v071, 71 @ + .equ v072, 72 @ + .equ v073, 73 @ + .equ v074, 74 @ + .equ v075, 75 @ + .equ v076, 76 @ + .equ v077, 77 @ + .equ v078, 78 @ + .equ v079, 79 @ + .equ v080, 80 @ + .equ v081, 81 @ + .equ v082, 82 @ + .equ v083, 83 @ + .equ v084, 84 @ + .equ v085, 85 @ + .equ v086, 86 @ + .equ v087, 87 @ + .equ v088, 88 @ + .equ v089, 89 @ + .equ v090, 90 @ + .equ v091, 91 @ + .equ v092, 92 @ + .equ v093, 93 @ + .equ v094, 94 @ + .equ v095, 95 @ + .equ v096, 96 @ + .equ v097, 97 @ + .equ v098, 98 @ + .equ v099, 99 @ + .equ v100, 100 @ + .equ v101, 101 @ + .equ v102, 102 @ + .equ v103, 103 @ + .equ v104, 104 @ + .equ v105, 105 @ + .equ v106, 106 @ + .equ v107, 107 @ + .equ v108, 108 @ + .equ v109, 109 @ + .equ v110, 110 @ + .equ v111, 111 @ + .equ v112, 112 @ + .equ v113, 113 @ + .equ v114, 114 @ + .equ v115, 115 @ + .equ v116, 116 @ + .equ v117, 117 @ + .equ v118, 118 @ + .equ v119, 119 @ + .equ v120, 120 @ + .equ v121, 121 @ + .equ v122, 122 @ + .equ v123, 123 @ + .equ v124, 124 @ + .equ v125, 125 @ + .equ v126, 126 @ + .equ v127, 127 @ + +@ exact gate time parameter for N?? + + .equ gtp1, 1 @ + .equ gtp2, 2 @ + .equ gtp3, 3 @ + +@ parameter of MODT + + .equ mod_vib,0 @ vibrate + .equ mod_tre,1 @ tremolo + .equ mod_pan,2 @ auto-panpot + +@ parameter of MEMACC + + .equ mem_set,0 @ + .equ mem_add,1 @ + .equ mem_sub,2 @ + .equ mem_mem_set,3 @ + .equ mem_mem_add,4 @ + .equ mem_mem_sub,5 @ + .equ mem_beq,6 @ + .equ mem_bne,7 @ + .equ mem_bhi,8 @ + .equ mem_bhs,9 @ + .equ mem_bls,10 @ + .equ mem_blo,11 @ + .equ mem_mem_beq,12 @ + .equ mem_mem_bne,13 @ + .equ mem_mem_bhi,14 @ + .equ mem_mem_bhs,15 @ + .equ mem_mem_bls,16 @ + .equ mem_mem_blo,17 @ + + .equ reverb_set,0x80 @ SOUND_MODE_REVERB_SET + .equ PAM, PAN @ diff --git a/include/macros.inc b/include/macros.inc new file mode 100644 index 000000000..f34353079 --- /dev/null +++ b/include/macros.inc @@ -0,0 +1,149 @@ + .include "include/macros/asm.inc" + .include "include/macros/function.inc" + .include "include/macros/movement.inc" + .include "include/macros/pokemon_data.inc" + .include "include/macros/ec.inc" + .include "include/macros/map.inc" + + .macro region_map_location x, y, width, height, name + .byte \x + .byte \y + .byte \width + .byte \height + .4byte gMapName_\name + .endm + + .macro obj_tiles address, uncompressed_size, tag + .4byte \address + .2byte \uncompressed_size + .2byte \tag + .endm + + .macro null_obj_tiles + obj_tiles 0, 0, 0 + .endm + + .macro obj_pal address, tag + .4byte \address + .2byte \tag + .2byte 0 @ padding + .endm + + .macro null_obj_pal + obj_pal 0, 0 + .endm + + .macro paired_pals tag, address + .2byte \tag + .2byte 0 @ padding + .4byte \address + .endm + +@ For object animation frames. + .macro obj_frame_tiles address, uncompressed_size + .4byte \address + .2byte \uncompressed_size + .2byte 0 @ padding + .endm + + .macro spr_template tile_tag, pal_tag, oam, anims, images, affine_anims, callback + .2byte \tile_tag + .2byte \pal_tag + .4byte \oam + .4byte \anims + .4byte \images + .4byte \affine_anims + .4byte \callback + .endm + +@ Berry trees have a table defining the palette slot used for each of their 5 +@ stages. However, the first 2 stages always use the same slots regardless of +@ the type of tree and the slots of the last 3 stages always equal each other. + .macro berry_tree_palette_slot_table slot + .byte 3, 4, \slot, \slot, \slot + .endm + + .macro subsprite x, y, priority, tile_num_offset, size + .2byte \x + .2byte \y + .2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size + .2byte 0 @ padding + .endm + + .macro obj_image_anim_frame pic_id, duration, flags = 0 + .2byte \pic_id + .byte (\flags) | (\duration) + .byte 0 @ padding + .endm + + .macro obj_image_anim_loop count + .2byte 0xfffd + .byte \count + .byte 0 @ padding + .endm + + .macro obj_image_anim_jump target_index + .2byte 0xfffe + .byte \target_index + .byte 0 @ padding + .endm + + .macro obj_image_anim_end + .2byte 0xffff + .2byte 0 @ padding + .endm + + .macro obj_rot_scal_anim_frame delta_x_scale, delta_y_scale, delta_angle, duration + .2byte \delta_x_scale + .2byte \delta_y_scale + .byte \delta_angle + .byte \duration + .2byte 0 @ padding + .endm + + .macro obj_rot_scal_anim_loop count + .2byte 0x7ffd + .2byte \count + .4byte 0 @ padding + .endm + + .macro obj_rot_scal_anim_jump target_index + .2byte 0x7ffe + .2byte \target_index + .4byte 0 @ padding + .endm + + .macro obj_rot_scal_anim_end unknown=0 + .2byte 0x7fff + .2byte \unknown + .fill 4 @ padding + .endm + + .macro credits_entry number, text + .4byte \number + .4byte \text + .endm + + .macro door_anim_frame unknown, offset + .byte \unknown + .byte 0 @ padding + .2byte \offset + .endm + + .macro door_anim_gfx metatile_num, unknown, tile_addr, palette_addr + .2byte \metatile_num + .2byte \unknown + .4byte \tile_addr + .4byte \palette_addr + .endm + + .macro trainer_eye_trainer opp_1, opp_2, opp_3, opp_4, opp_5, map_name + .2byte OPPONENT_\opp_1 + .2byte OPPONENT_\opp_2 + .2byte OPPONENT_\opp_3 + .2byte OPPONENT_\opp_4 + .2byte OPPONENT_\opp_5 + .2byte GROUP_\map_name + .2byte MAP_\map_name + .space 2 + .endm diff --git a/include/macros/asm.inc b/include/macros/asm.inc new file mode 100644 index 000000000..26b2707ca --- /dev/null +++ b/include/macros/asm.inc @@ -0,0 +1,17 @@ + .ifndef GUARD_ASM_MACROS_ASM_INC + .set GUARD_ASM_MACROS_ASM_INC, 1 + + .macro inc x + .set \x, \x + 1 + .endm + + .macro enum_start x=0 + .set __enum__, \x + .endm + + .macro enum constant + .equiv \constant, __enum__ + inc __enum__ + .endm + + .endif @ GUARD_ASM_MACROS_ASM_INC diff --git a/include/macros/battle_ai_script.inc b/include/macros/battle_ai_script.inc new file mode 100644 index 000000000..679e30340 --- /dev/null +++ b/include/macros/battle_ai_script.inc @@ -0,0 +1,554 @@ + .macro if_random_less_than percent, address + .byte 0x00 + .byte \percent + .4byte \address + .endm + + @ unused + .macro if_random_greater_than percent, address + .byte 0x01 + .byte \percent + .4byte \address + .endm + + @ unused + .macro if_random_equal address + .byte 0x02 + .4byte \address + .endm + + @ unused + .macro if_random_not_equal address + .byte 0x03 + .4byte \address + .endm + + .macro score score + .byte 0x04 + .byte \score + .endm + + .macro if_hp_less_than target, percent, address + .byte 0x05 + .byte \target + .byte \percent + .4byte \address + .endm + + .macro if_hp_more_than target, percent, address + .byte 0x06 + .byte \target + .byte \percent + .4byte \address + .endm + + .macro if_hp_equal target, percent, address + .byte 0x07 + .byte \target + .byte \percent + .4byte \address + .endm + + .macro if_hp_not_equal target, percent, address + .byte 0x08 + .byte \target + .byte \percent + .4byte \address + .endm + + .macro if_status target, status, address + .byte 0x09 + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_not_status target, status, address + .byte 0x0a + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_status2 target, status, address + .byte 0x0b + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_not_status2 target, status, address + .byte 0x0c + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_status3 target, status, address + .byte 0x0d + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_not_status3 target, status, address + .byte 0x0e + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_status4 target, status, address + .byte 0x0f + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_not_status4 target, status, address + .byte 0x10 + .byte \target + .4byte \status + .4byte \address + .endm + + .macro if_less_than value, address + .byte 0x11 + .byte \value + .4byte \address + .endm + + .macro if_more_than value, address + .byte 0x12 + .byte \value + .4byte \address + .endm + + .macro if_equal value, address + .byte 0x13 + .byte \value + .4byte \address + .endm + + .macro if_not_equal value, address + .byte 0x14 + .byte \value + .4byte \address + .endm + + .macro if_less_than_32 value, address + .byte 0x15 + .4byte \value + .4byte \address + .endm + + .macro if_more_than_32 value, address + .byte 0x16 + .4byte \value + .4byte \address + .endm + + .macro if_equal_32 value, address + .byte 0x17 + .4byte \value + .4byte \address + .endm + + .macro if_not_equal_32 value, address + .byte 0x18 + .4byte \value + .4byte \address + .endm + + .macro if_move move, address + .byte 0x19 + .2byte \move + .4byte \address + .endm + + .macro if_not_move move, address + .byte 0x1a + .2byte \move + .4byte \address + .endm + + .macro if_in_bytes list, address + .byte 0x1b + .4byte \list + .4byte \address + .endm + + .macro if_not_in_bytes list, address + .byte 0x1c + .4byte \list + .4byte \address + .endm + + .macro if_in_words list, address + .byte 0x1d + .4byte \list + .4byte \address + .endm + + .macro if_not_in_words list, address + .byte 0x1e + .4byte \list + .4byte \address + .endm + + .macro if_user_can_damage address + .byte 0x1f + .4byte \address + .endm + + .macro if_user_cant_damage address + .byte 0x20 + .4byte \address + .endm + + .macro get_turn_count + .byte 0x21 + .endm + + .macro get_type byte + .byte 0x22 + .byte \byte + .endm + + @ unused + .macro get_move_power + .byte 0x23 + .endm + + .macro is_most_powerful_move + .byte 0x24 + .endm + + .macro get_move target + .byte 0x25 + .byte \target + .endm + + .macro if_arg_equal type, address + .byte 0x26 + .byte \type + .4byte \address + .endm + + @ unused + .macro if_arg_not_equal type, address + .byte 0x27 + .byte \type + .4byte \address + .endm + + .macro if_would_go_first target, address + .byte 0x28 + .byte \target + .4byte \address + .endm + + .macro if_would_not_go_first target, address + .byte 0x29 + .byte \target + .4byte \address + .endm + + @ nullsub + .macro ai_2a + .byte 0x2a + .endm + + @ nullsub + .macro ai_2b + .byte 0x2b + .endm + + .macro count_alive_pokemon target + .byte 0x2c + .byte \target + .endm + + @ unused + .macro get_considered_move + .byte 0x2d + .endm + + .macro get_effect + .byte 0x2e + .endm + + .macro get_ability target + .byte 0x2f + .byte \target + .endm + + @ unused + .macro get_highest_possible_damage + .byte 0x30 + .endm + + .macro if_damage_bonus value, address + .byte 0x31 + .byte \value + .4byte \address + .endm + + @ nullsub + .macro ai_32 + .byte 0x32 + .endm + + @ nullsub + .macro ai_33 + .byte 0x33 + .endm + + .macro if_status_in_party target, status, address + .byte 0x34 + .byte \target + .4byte \status + .4byte \address + .endm + + @ bugged + .macro if_status_not_in_party target, status, address + .byte 0x35 + .byte \target + .4byte \status + .4byte \address + .endm + + .macro get_weather + .byte 0x36 + .endm + + .macro if_effect byte, address + .byte 0x37 + .byte \byte + .4byte \address + .endm + + .macro if_not_effect byte, address + .byte 0x38 + .byte \byte + .4byte \address + .endm + + .macro if_stat_level_less_than target, stat, level, address + .byte 0x39 + .byte \target + .byte \stat + .byte \level + .4byte \address + .endm + + .macro if_stat_level_more_than target, stat, level, address + .byte 0x3a + .byte \target + .byte \stat + .byte \level + .4byte \address + .endm + + .macro if_stat_level_equal target, stat, level, address + .byte 0x3b + .byte \target + .byte \stat + .byte \level + .4byte \address + .endm + + .macro if_stat_level_not_equal target, stat, level, address + .byte 0x3c + .byte \target + .byte \stat + .byte \level + .4byte \address + .endm + + .macro if_can_faint address + .byte 0x3d + .4byte \address + .endm + + .macro if_cant_faint address + .byte 0x3e + .4byte \address + .endm + + @ unused + .macro if_has_move, target, move, address + .byte 0x3f + .byte \target + .2byte \move + .4byte \address + .endm + + @ unused + .macro if_dont_have_move, target, move, address + .byte 0x40 + .byte \target + .2byte \move + .4byte \address + .endm + + .macro if_move_effect target, effect, address + .byte 0x41 + .byte \target + .byte \effect + .4byte \address + .endm + + .macro if_not_move_effect target, effect, address + .byte 0x42 + .byte \target + .byte \effect + .4byte \address + .endm + + .macro if_last_move_did_damage target, byte, address + .byte 0x43 + .byte \target + .byte \byte + .4byte \address + .endm + + .macro if_encored target, address + .byte 0x44 + .byte \target + .4byte \address + .endm + + .macro flee + .byte 0x45 + .endm + + .macro if_random_100 address + .byte 0x46 + .4byte \address + .endm + + .macro watch + .byte 0x47 + .endm + + .macro get_hold_effect target + .byte 0x48 + .byte \target + .endm + + .macro get_gender target + .byte 0x49 + .byte \target + .endm + + .macro is_first_turn target + .byte 0x4a + .byte \target + .endm + + .macro get_stockpile_count target + .byte 0x4b + .byte \target + .endm + + .macro is_double_battle + .byte 0x4c + .endm + + .macro get_item target + .byte 0x4d + .byte \target + .endm + + .macro get_move_type_from_result + .byte 0x4e + .endm + + .macro get_move_power_from_result + .byte 0x4f + .endm + + .macro get_move_effect_from_result + .byte 0x50 + .endm + + .macro get_protect_count target + .byte 0x51 + .byte \target + .endm + + @ nullsub + .macro ai_52 + .byte 0x52 + .endm + + @ nullsub + .macro ai_53 + .byte 0x53 + .endm + + @ nullsub + .macro ai_54 + .byte 0x54 + .endm + + @ nullsub + .macro ai_55 + .byte 0x55 + .endm + + @ nullsub + .macro ai_56 + .byte 0x56 + .endm + + @ nullsub + .macro ai_57 + .byte 0x57 + .endm + + @ unused + .macro call address + .byte 0x58 + .4byte \address + .endm + + .macro jump address + .byte 0x59 + .4byte \address + .endm + + .macro end + .byte 0x5a + .endm + + .macro if_level_cond cond, address + .byte 0x5b + .byte \cond + .4byte \address + .endm + + .macro if_user_higher_level address + if_level_cond 0, \address + .endm + + .macro if_target_higher_level address + if_level_cond 1, \address + .endm + + .macro if_equal_levels address + if_level_cond 2, \address + .endm + + @ unused + .macro if_taunted address + .byte 0x5c + .4byte \address + .endm + + .macro if_not_taunted address + .byte 0x5d + .4byte \address + .endm diff --git a/include/macros/battle_anim.inc b/include/macros/battle_anim.inc new file mode 100644 index 000000000..4ff845032 --- /dev/null +++ b/include/macros/battle_anim.inc @@ -0,0 +1,266 @@ + .macro loadsprite id + .byte 0x00 + .2byte \id + .endm + + .macro unloadsprite id + .byte 0x01 + .2byte \id + .endm + + .macro sprite template, priority, argv:vararg + .byte 0x02 + .4byte \template + .byte \priority + .byte (.Lsprite_\@_2 - .Lsprite_\@_1) / 2 +.Lsprite_\@_1: + .2byte \argv +.Lsprite_\@_2: + .endm + + .macro createtask addr, priority, argv:vararg + .byte 0x03 + .4byte \addr + .byte \priority + .byte (.Lcreatetask_\@_2 - .Lcreatetask_\@_1) / 2 +.Lcreatetask_\@_1: + .2byte \argv +.Lcreatetask_\@_2: + .endm + + .macro pause delay + .byte 0x04 + .byte \delay + .endm + + .macro wait + .byte 0x05 + .endm + + .macro hang1 + .byte 0x06 + .endm + + .macro hang2 + .byte 0x07 + .endm + + .macro end + .byte 0x08 + .endm + + .macro playse id + .byte 0x09 + .2byte \id + .endm + + .macro monbg which + .byte 0x0A + .byte \which + .endm + + .macro clearmonbg which + .byte 0x0B + .byte \which + .endm + + .macro setalpha eva, evb + .byte 0x0C + .2byte ((\evb) << 8) | (\eva) + .endm + + .macro blendoff + .byte 0x0D + .endm + + .macro call addr + .byte 0x0E + .4byte \addr + .endm + + .macro ret + .byte 0x0F + .endm + + .macro setvar var_num, value + .byte 0x10 + .byte \var_num + .2byte \value + .endm + + .macro ifelse addr1, addr2 + .byte 0x11 + .4byte \addr1 + .4byte \addr2 + .endm + + .macro jumpif cond, addr + .byte 0x12 + .byte \cond + .4byte \addr + .endm + + .macro jump addr + .byte 0x13 + .4byte \addr + .endm + + .macro fadetobg id + .byte 0x14 + .byte \id + .endm + + .macro restorebg + .byte 0x15 + .endm + + .macro waitbgfadeout + .byte 0x16 + .endm + + .macro waitbgfadein + .byte 0x17 + .endm + + .macro changebg id + .byte 0x18 + .byte \id + .endm + + .macro panse_19 id, pan + .byte 0x19 + .2byte \id + .byte \pan + .endm + + .macro setpan pan + .byte 0x1A + .byte \pan + .endm + + .macro panse_1B id, pan_start, pan_end, step, delay + .byte 0x1B + .2byte \id + .byte \pan_start + .byte \pan_end + .byte \step + .byte \delay + .endm + + .macro panse_1C id, pan, delay, count + .byte 0x1C + .2byte \id + .byte \pan + .byte \delay + .byte \count + .endm + + .macro panse_1D id, pan, count + .byte 0x1D + .2byte \id + .byte \pan + .byte \count + .endm + + .macro setbldcnt bldcnt + .byte 0x1E + .2byte \bldcnt + .endm + + .macro createtask_1F addr, argv:vararg + .byte 0x1F + .4byte \addr + .byte (.Lcreatetask_1F_\@_2 - .Lcreatetask_1F_\@_1) / 2 +.Lcreatetask_1F_\@_1: + .2byte \argv +.Lcreatetask_1F_\@_2: + .endm + + .macro waitsound + .byte 0x20 + .endm + + .macro jumpvareq var_num, value, addr + .byte 0x21 + .byte \var_num + .2byte \value + .4byte \addr + .endm + + .macro monbg_22 unk + .byte 0x22 + .byte \unk + .endm + + .macro clearmonbg_23 unk + .byte 0x23 + .byte \unk + .endm + + .macro jumpunkcond addr + .byte 0x24 + .4byte \addr + .endm + + .macro fadetobg_25 a, b, c + .byte 0x25 + .byte \a + .byte \b + .byte \c + .endm + + .macro panse_26 id, pan_start, pan_end, step, delay + .byte 0x26 + .2byte \id + .byte \pan_start + .byte \pan_end + .byte \step + .byte \delay + .endm + + .macro panse_27 id, pan_start, pan_end, step, delay + .byte 0x27 + .2byte \id + .byte \pan_start + .byte \pan_end + .byte \step + .byte \delay + .endm + + .macro monbgprio_28 unk + .byte 0x28 + .byte \unk + .endm + + .macro monbgprio_29 + .byte 0x29 + .endm + + .macro monbgprio_2A unk + .byte 0x2A + .byte \unk + .endm + + .macro invisible side + .byte 0x2B + .byte \side + .endm + + .macro visible side + .byte 0x2C + .byte \side + .endm + + .macro doublebattle_2D unk + .byte 0x2D + .byte \unk + .endm + + .macro doublebattle_2E unk + .byte 0x2E + .byte \unk + .endm + + .macro stopsound + .byte 0x2F + .endm diff --git a/include/macros/battle_script.inc b/include/macros/battle_script.inc new file mode 100644 index 000000000..e4fa0c454 --- /dev/null +++ b/include/macros/battle_script.inc @@ -0,0 +1,1414 @@ +@ 0 == +@ 1 != +@ 2 < +@ 3 > +@ 4 &= + + .macro calculatedamage + critical + atk5 + atk6 + atk7 + .endm + + + .macro attackcanceler + .byte 0x00 + .endm + + .macro accuracycheck address, param1 + .byte 0x01 + .4byte \address + .2byte \param1 + .endm + + .macro attackstring + .byte 0x02 + .endm + + .macro ppreduce + .byte 0x03 + .endm + + .macro critcalc + .byte 0x04 + .endm + + .macro damagecalc + .byte 0x05 + .endm + + .macro typecalc + .byte 0x06 + .endm + + .macro adjustnormaldamage + .byte 0x07 + .endm + + .macro adjustnormaldamage2 + .byte 0x08 + .endm + + .macro attackanimation + .byte 0x09 + .endm + + .macro waitanimation + .byte 0x0a + .endm + + .macro healthbarupdate bank + .byte 0x0b + .byte \bank + .endm + + .macro datahpupdate bank + .byte 0x0c + .byte \bank + .endm + + .macro critmessage + .byte 0x0d + .endm + + .macro effectivenesssound + .byte 0x0e + .endm + + .macro resultmessage + .byte 0x0f + .endm + + .macro printstring string + .byte 0x10 + .2byte \string + .endm + + .macro printselectionstring string + .byte 0x11 + .2byte \string + .endm + + .macro waitmessage delay + .byte 0x12 + .2byte \delay + .endm + + .macro printfromtable table + .byte 0x13 + .4byte \table + .endm + + .macro printselectionstringfromtable table + .byte 0x14 + .4byte \table + .endm + + .macro seteffectwithchance + .byte 0x15 + .endm + + .macro seteffectprimary + .byte 0x16 + .endm + + .macro seteffectsecondary + .byte 0x17 + .endm + + .macro clearstatusfromeffect bank + .byte 0x18 + .byte \bank + .endm + + .macro tryfaintmon bank, param2, param3 + .byte 0x19 + .byte \bank + .byte \param2 + .4byte \param3 + .endm + + .macro dofaintanimation param1 + .byte 0x1a + .byte \param1 + .endm + + .macro cleareffectsonfaint bank + .byte 0x1b + .byte \bank + .endm + + .macro jumpifstatus bank, status, address + .byte 0x1c + .byte \bank + .4byte \status + .4byte \address + .endm + + .macro jumpifstatus2 bank, status, address + .byte 0x1d + .byte \bank + .4byte \status + .4byte \address + .endm + + .macro jumpifability bank, ability, address + .byte 0x1e + .byte \bank + .byte \ability + .4byte \address + .endm + + .macro jumpifsideaffecting bank, status, address + .byte 0x1f + .byte \bank + .2byte \status + .4byte \address + .endm + + .macro jumpifstat bank, flag, quantity, statid, address + .byte 0x20 + .byte \bank + .byte \flag + .byte \quantity + .byte \statid + .4byte \address + .endm + + .macro jumpifstatus3condition bank, mask, status, address + .byte 0x21 + .byte \bank + .4byte \mask + .byte \status + .4byte \address + .endm + + .macro jumpiftype bank, type, address + .byte 0x22 + .byte \bank + .byte \type + .4byte \address + .endm + + .macro getexp bank + .byte 0x23 + .byte \bank + .endm + + .macro atk24 address + .byte 0x24 + .4byte \address + .endm + + .macro movevaluescleanup + .byte 0x25 + .endm + + .macro setmultihit param1 + .byte 0x26 + .byte \param1 + .endm + + .macro decrementmultihit address + .byte 0x27 + .4byte \address + .endm + + .macro goto address + .byte 0x28 + .4byte \address + .endm + + .macro jumpifbyte ifflag, checkaddr, compare, address + .byte 0x29 + .byte \ifflag + .4byte \checkaddr + .byte \compare + .4byte \address + .endm + + .macro jumpifhalfword ifflag, checkaddr, compare, address + .byte 0x2a + .byte \ifflag + .4byte \checkaddr + .2byte \compare + .4byte \address + .endm + + .macro jumpifword ifflag, checkaddr, compare, address + .byte 0x2b + .byte \ifflag + .4byte \checkaddr + .4byte \compare + .4byte \address + .endm + + .macro jumpifarrayequal mem1, mem2, size, address + .byte 0x2c + .4byte \mem1 + .4byte \mem2 + .byte \size + .4byte \address + .endm + + .macro jumpifarraynotequal mem1, mem2, size, address + .byte 0x2d + .4byte \mem1 + .4byte \mem2 + .byte \size + .4byte \address + .endm + + .macro setbyte pointer, value + .byte 0x2e + .4byte \pointer + .byte \value + .endm + + .macro addbyte pointer, value + .byte 0x2f + .4byte \pointer + .byte \value + .endm + + .macro subbyte pointer, value + .byte 0x30 + .4byte \pointer + .byte \value + .endm + + .macro copyarray destination, source, size + .byte 0x31 + .4byte \destination + .4byte \source + .byte \size + .endm + + .macro copyarraywithindex param1, param2, param3, byte + .byte 0x32 + .4byte \param1 + .4byte \param2 + .4byte \param3 + .byte \byte + .endm + + .macro orbyte pointer, value + .byte 0x33 + .4byte \pointer + .byte \value + .endm + + .macro orhalfword pointer, value + .byte 0x34 + .4byte \pointer + .2byte \value + .endm + + .macro orword pointer, value + .byte 0x35 + .4byte \pointer + .4byte \value + .endm + + .macro bicbyte pointer, value + .byte 0x36 + .4byte \pointer + .byte \value + .endm + + .macro bichalfword pointer, value + .byte 0x37 + .4byte \pointer + .2byte \value + .endm + + .macro bicword pointer, value + .byte 0x38 + .4byte \pointer + .4byte \value + .endm + + .macro pause pause_duration + .byte 0x39 + .2byte \pause_duration + .endm + + .macro waitstate + .byte 0x3a + .endm + + .macro healthbar_update bank + .byte 0x3b + .byte \bank + .endm + + .macro return + .byte 0x3c + .endm + + .macro end + .byte 0x3d + .endm + + .macro end2 + .byte 0x3e + .endm + + .macro end3 + .byte 0x3f + .endm + + .macro jumpifaffectedbyprotect address + .byte 0x40 + .4byte \address + .endm + + .macro call address + .byte 0x41 + .4byte \address + .endm + + .macro jumpiftype2 bank, type, address + .byte 0x42 + .byte \bank + .byte \type + .4byte \address + .endm + + .macro jumpifabilitypresent ability, address + .byte 0x43 + .byte \ability + .4byte \address + .endm + + .macro endselectionscript + .byte 0x44 + .endm + + .macro playanimation bank, animation, var_address + .byte 0x45 + .byte \bank + .byte \animation + .4byte \var_address + .endm + + .macro playanimation2 bank, address, int + .byte 0x46 + .byte \bank + .4byte \address + .4byte \int + .endm + + .macro setgraphicalstatchangevalues + .byte 0x47 + .endm + + .macro playstatchangeanimation bank, color, byte + .byte 0x48 + .byte \bank + .byte \color + .byte \byte + .endm + + .macro moveend byte1, byte2 + .byte 0x49 + .byte \byte1 + .byte \byte2 + .endm + + .macro typecalc2 + .byte 0x4a + .endm + + .macro returnatktoball + .byte 0x4b + .endm + + .macro getswitchedmondata bank + .byte 0x4c + .byte \bank + .endm + + .macro switchindataupdate bank + .byte 0x4d + .byte \bank + .endm + + .macro switchinanim bank, byte + .byte 0x4e + .byte \bank + .byte \byte + .endm + + .macro jumpifcantswitch bank, address + .byte 0x4f + .byte \bank + .4byte \address + .endm + + .macro openpartyscreen bank, address + .byte 0x50 + .byte \bank + .4byte \address + .endm + + .macro switchhandleorder bank, param2 + .byte 0x51 + .byte \bank + .byte \param2 + .endm + + .macro switchineffects bank + .byte 0x52 + .byte \bank + .endm + + .macro trainerslidein bank + .byte 0x53 + .byte \bank + .endm + + .macro playse word + .byte 0x54 + .2byte \word + .endm + + .macro fanfare int + .byte 0x55 + .2byte \int + .endm + + .macro playfaintcry bank_or_side + .byte 0x56 + .byte \bank_or_side + .endm + + .macro atk57 + .byte 0x57 + .endm + + .macro returntoball bank + .byte 0x58 + .byte \bank + .endm + + .macro handlelearnnewmove param1, param2, bank_maybe + .byte 0x59 + .4byte \param1 + .4byte \param2 + .byte \bank_maybe + .endm + + .macro yesnoboxlearnmove address + .byte 0x5a + .4byte \address + .endm + + .macro yesnoboxstoplearningmove address + .byte 0x5b + .4byte \address + .endm + + .macro hitanimation bank + .byte 0x5c + .byte \bank + .endm + + .macro getmoneyreward + .byte 0x5d + .endm + + .macro atk5e bank + .byte 0x5e + .byte \bank + .endm + + .macro atk5f + .byte 0x5f + .endm + + .macro incrementgamestat byte + .byte 0x60 + .byte \byte + .endm + + .macro drawpartystatussummary bank_or_side + .byte 0x61 + .byte \bank_or_side + .endm + + .macro atk62 bank_or_side + .byte 0x62 + .byte \bank_or_side + .endm + + .macro jumptorandomattack bank + .byte 0x63 + .byte \bank + .endm + + .macro statusanimation bank + .byte 0x64 + .byte \bank + .endm + + .macro status2animation bank_or_side, address + .byte 0x65 + .byte \bank_or_side + .4byte \address + .endm + + .macro chosenstatusanimation bank_or_side, bank_or_side2, address + .byte 0x66 + .byte \bank_or_side + .byte \bank_or_side2 + .4byte \address + .endm + + .macro yesnobox + .byte 0x67 + .endm + + .macro cancelallactions + .byte 0x68 + .endm + + .macro adjustsetdamage + .byte 0x69 + .endm + + .macro removeitem bank + .byte 0x6a + .byte \bank + .endm + + .macro atknameinbuff1 + .byte 0x6b + .endm + + .macro drawlvlupbox + .byte 0x6c + .endm + + .macro resetsentmonsvalue + .byte 0x6d + .endm + + .macro setatktoplayer0 + .byte 0x6e + .endm + + .macro makevisible bank + .byte 0x6f + .byte \bank + .endm + + .macro recordlastability bank + .byte 0x70 + .byte \bank + .endm + + .macro buffermovetolearn + .byte 0x71 + .endm + + .macro jumpifplayerran address + .byte 0x72 + .4byte \address + .endm + + .macro hpthresholds bank + .byte 0x73 + .byte \bank + .endm + + .macro hpthresholds2 bank + .byte 0x74 + .byte \bank + .endm + + .macro useitemonopponent + .byte 0x75 + .endm + + .macro various bank, byte + .byte 0x76 + .byte \bank + .byte \byte + .endm + + .macro setprotectlike + .byte 0x77 + .endm + + .macro faintifabilitynotdamp + .byte 0x78 + .endm + + .macro setatkhptozero + .byte 0x79 + .endm + + .macro jumpifnexttargetvalid address + .byte 0x7a + .4byte \address + .endm + + .macro tryhealhalfhealth address, byte + .byte 0x7b + .4byte \address + .byte \byte + .endm + + .macro trymirrormove + .byte 0x7c + .endm + + .macro setrain + .byte 0x7d + .endm + + .macro setreflect + .byte 0x7e + .endm + + .macro setseeded + .byte 0x7f + .endm + + .macro manipulatedamage id + .byte 0x80 + .byte \id + .endm + + .macro trysetrest address + .byte 0x81 + .4byte \address + .endm + + .macro jumpifnotfirstturn address + .byte 0x82 + .4byte \address + .endm + + .macro nop + .byte 0x83 + .endm + + .macro jumpifcantmakeasleep address + .byte 0x84 + .4byte \address + .endm + + .macro stockpile + .byte 0x85 + .endm + + .macro stockpiletobasedamage address + .byte 0x86 + .4byte \address + .endm + + .macro stockpiletohpheal address + .byte 0x87 + .4byte \address + .endm + + .macro negativedamage + .byte 0x88 + .endm + + .macro statbuffchange target, address + .byte 0x89 + .byte \target + .4byte \address + .endm + + .macro normalisebuffs + .byte 0x8a + .endm + + .macro setbide + .byte 0x8b + .endm + + .macro confuseifrepeatingattackends + .byte 0x8c + .endm + + .macro setmultihitcounter count + .byte 0x8d + .byte \count + .endm + + .macro initmultihitstring + .byte 0x8e + .endm + + .macro forcerandomswitch address + .byte 0x8f + .4byte \address + .endm + + .macro tryconversiontypechange address + .byte 0x90 + .4byte \address + .endm + + .macro givepaydaymoney + .byte 0x91 + .endm + + .macro setlightscreen + .byte 0x92 + .endm + + .macro tryKO address + .byte 0x93 + .4byte \address + .endm + + .macro damagetohalftargethp + .byte 0x94 + .endm + + .macro setsandstorm + .byte 0x95 + .endm + + .macro weatherdamage + .byte 0x96 + .endm + + .macro tryinfatuating address + .byte 0x97 + .4byte \address + .endm + + .macro updatestatusicon byte + .byte 0x98 + .byte \byte + .endm + + .macro setmist + .byte 0x99 + .endm + + .macro setfocusenergy + .byte 0x9a + .endm + + .macro transformdataexecution + .byte 0x9b + .endm + + .macro setsubstitute + .byte 0x9c + .endm + + .macro mimicattackcopy address + .byte 0x9d + .4byte \address + .endm + + .macro metronome + .byte 0x9e + .endm + + .macro dmgtolevel + .byte 0x9f + .endm + + .macro psywavedamageeffect + .byte 0xa0 + .endm + + .macro counterdamagecalculator address + .byte 0xa1 + .4byte \address + .endm + + .macro mirrorcoatdamagecalculator address + .byte 0xa2 + .4byte \address + .endm + + .macro disablelastusedattack address + .byte 0xa3 + .4byte \address + .endm + + .macro trysetencore address + .byte 0xa4 + .4byte \address + .endm + + .macro painsplitdmgcalc address + .byte 0xa5 + .4byte \address + .endm + + .macro settypetorandomresistance address + .byte 0xa6 + .4byte \address + .endm + + .macro setalwayshitflag + .byte 0xa7 + .endm + + .macro copymovepermanently address + .byte 0xa8 + .4byte \address + .endm + + .macro trychoosesleeptalkmove address + .byte 0xa9 + .4byte \address + .endm + + .macro setdestinybond + .byte 0xaa + .endm + + .macro trysetdestinybondtohappen + .byte 0xab + .endm + + .macro remaininghptopower + .byte 0xac + .endm + + .macro tryspiteppreduce address + .byte 0xad + .4byte \address + .endm + + .macro healpartystatus + .byte 0xae + .endm + + .macro cursetarget address + .byte 0xaf + .4byte \address + .endm + + .macro trysetspikes address + .byte 0xb0 + .4byte \address + .endm + + .macro setforesight + .byte 0xb1 + .endm + + .macro trysetperishsong address + .byte 0xb2 + .4byte \address + .endm + + .macro rolloutdamagecalculation + .byte 0xb3 + .endm + + .macro jumpifconfusedandstatmaxed bank, address + .byte 0xb4 + .byte \bank + .4byte \address + .endm + + .macro furycuttercalc + .byte 0xb5 + .endm + + .macro happinesstodamagecalculation + .byte 0xb6 + .endm + + .macro presentdamagecalculation + .byte 0xb7 + .endm + + .macro setsafeguard + .byte 0xb8 + .endm + + .macro magnitudedamagecalculation + .byte 0xb9 + .endm + + .macro jumpifnopursuitswitchdmg address + .byte 0xba + .4byte \address + .endm + + .macro setsunny + .byte 0xbb + .endm + + .macro maxattackhalvehp address + .byte 0xbc + .4byte \address + .endm + + .macro copyfoestats address + .byte 0xbd + .4byte \address + .endm + + .macro rapidspinfree + .byte 0xbe + .endm + + .macro setdefensecurlbit + .byte 0xbf + .endm + + .macro recoverbasedonsunlight address + .byte 0xc0 + .4byte \address + .endm + + .macro hiddenpowercalc + .byte 0xc1 + .endm + + .macro selectfirstvalidtarget + .byte 0xc2 + .endm + + .macro trysetfutureattack address + .byte 0xc3 + .4byte \address + .endm + + .macro trydobeatup address1, address2 + .byte 0xc4 + .4byte \address1 + .4byte \address2 + .endm + + .macro setsemiinvulnerablebit + .byte 0xc5 + .endm + + .macro clearsemiinvulnerablebit + .byte 0xc6 + .endm + + .macro setminimize + .byte 0xc7 + .endm + + .macro sethail + .byte 0xc8 + .endm + + .macro jumpifattackandspecialattackcannotfall address + .byte 0xc9 + .4byte \address + .endm + + .macro setforcedtarget + .byte 0xca + .endm + + .macro setcharge + .byte 0xcb + .endm + + .macro callterrainattack + .byte 0xcc + .endm + + .macro cureifburnedparalysedorpoisoned address + .byte 0xcd + .4byte \address + .endm + + .macro settorment address + .byte 0xce + .4byte \address + .endm + + .macro jumpifnodamage address + .byte 0xcf + .4byte \address + .endm + + .macro settaunt address + .byte 0xd0 + .4byte \address + .endm + + .macro trysethelpinghand address + .byte 0xd1 + .4byte \address + .endm + + .macro tryswapitems address + .byte 0xd2 + .4byte \address + .endm + + .macro trycopyability address + .byte 0xd3 + .4byte \address + .endm + + .macro trywish byte, address + .byte 0xd4 + .byte \byte + .4byte \address + .endm + + .macro trysetroots address + .byte 0xd5 + .4byte \address + .endm + + .macro doubledamagedealtifdamaged + .byte 0xd6 + .endm + + .macro setyawn address + .byte 0xd7 + .4byte \address + .endm + + .macro setdamagetohealthdifference address + .byte 0xd8 + .4byte \address + .endm + + .macro scaledamagebyhealthratio + .byte 0xd9 + .endm + + .macro tryswapabilities address + .byte 0xda + .4byte \address + .endm + + .macro tryimprision address + .byte 0xdb + .4byte \address + .endm + + .macro trysetgrudge address + .byte 0xdc + .4byte \address + .endm + + .macro weightdamagecalculation + .byte 0xdd + .endm + + .macro assistattackselect address + .byte 0xde + .4byte \address + .endm + + .macro trysetmagiccoat address + .byte 0xdf + .4byte \address + .endm + + .macro trysetsnatch address + .byte 0xe0 + .4byte \address + .endm + + .macro trygetintimidatetarget address + .byte 0xe1 + .4byte \address + .endm + + .macro switchoutabilities bank + .byte 0xe2 + .byte \bank + .endm + + .macro jumpifhasnohp bank, address + .byte 0xe3 + .byte \bank + .4byte \address + .endm + + .macro getsecretpowereffect + .byte 0xe4 + .endm + + .macro pickup + .byte 0xe5 + .endm + + .macro docastformchangeanimation + .byte 0xe6 + .endm + + .macro trycastformdatachange + .byte 0xe7 + .endm + + .macro settypebasedhalvers address + .byte 0xe8 + .4byte \address + .endm + + .macro setweatherballtype + .byte 0xe9 + .endm + + .macro tryrecycleitem address + .byte 0xea + .4byte \address + .endm + + .macro settypetoterrain address + .byte 0xeb + .4byte \address + .endm + + .macro pursuitrelated address + .byte 0xec + .4byte \address + .endm + + .macro snatchsetbanks + .byte 0xed + .endm + + .macro removelightscreenreflect + .byte 0xee + .endm + + .macro handleballthrow + .byte 0xef + .endm + + .macro givecaughtmon + .byte 0xf0 + .endm + + .macro trysetcaughtmondexflags address + .byte 0xf1 + .4byte \address + .endm + + .macro displaydexinfo + .byte 0xf2 + .endm + + .macro trygivecaughtmonnick address + .byte 0xf3 + .4byte \address + .endm + + .macro subattackerhpbydmg + .byte 0xf4 + .endm + + .macro removeattackerstatus1 + .byte 0xf5 + .endm + + .macro finishaction + .byte 0xf6 + .endm + + .macro finishturn + .byte 0xf7 + .endm + + .macro trainerslideout bank + .byte 0xf8 + .byte \bank + .endm + +@ various command changed to more readable macros + .macro cancelmultiturnmoves bank + various \bank, VARIOUS_CANCEL_MULTI_TURN_MOVES + .endm + + .macro setmagiccoattarget bank + various \bank, VARIOUS_SET_MAGIC_COAT_TARGET + .endm + + .macro getifcantrunfrombattle bank + various \bank, VARIOUS_IS_RUNNING_IMPOSSIBLE + .endm + + .macro getmovetarget bank + various \bank, VARIOUS_GET_MOVE_TARGET + .endm + + .macro various4 bank + various \bank, 4 + .endm + + .macro resetintrimidatetracebits bank + various \bank, VARIOUS_RESET_INTIMIDATE_TRACE_BITS + .endm + + .macro updatechoicemoveonlvlup bank + various \bank, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP + .endm + + .macro various7 bank + various \bank, 7 + .endm + + .macro various8 bank + various \bank, 8 + .endm + + .macro various9 bank + various \bank, 9 + .endm + + .macro various10 bank + various \bank, 10 + .endm + + .macro various11 bank + various \bank, 11 + .endm + + .macro various12 bank + various \bank, 12 + .endm + + .macro forfeityesnobox bank + various \bank, VARIOUS_EMIT_YESNOBOX + .endm + + .macro various14 bank + various \bank, 14 + .endm + + .macro various15 bank + various \bank, 15 + .endm + + .macro various16 bank + various \bank, 16 + .endm + + .macro various17 bank + various \bank, 17 + .endm + + .macro waitcry bank + various \bank, VARIOUS_WAIT_CRY + .endm + + .macro returnopponentmon1toball bank + various \bank, VARIOUS_RETURN_OPPONENT_MON1 + .endm + + .macro returnopponentmon2toball bank + various \bank, VARIOUS_RETURN_OPPONENT_MON2 + .endm + + .macro various21 bank + various \bank, 21 + .endm + + .macro various22 bank + various \bank, 22 + .endm + + .macro various23 bank + various \bank, 23 + .endm + + .macro various24 bank + various \bank, 24 + .endm + + .macro setoutcomeonteleport bank + various \bank, VARIOUS_SET_TELEPORT_OUTCOME + .endm + + .macro playtrainerdefeatbgm bank + various \bank, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC + .endm + +@ helpful macros + .macro setstatchanger stat, stages, down + setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7 + .endm + + .macro setmoveeffect effect + setbyte cEFFECT_CHOOSER \effect + .endm + + .macro chosenstatus1animation bank, status + chosenstatusanimation \bank 0x0 \status + .endm + + .macro chosenstatus2animation bank, status + chosenstatusanimation \bank 0x1 \status + .endm + + .macro sethword dst, value + setbyte \dst, \value & 0xFF + setbyte \dst + 1, (\value >> 8) & 0xFF + .endm + + .macro setword dst, value + setbyte \dst, \value & 0xFF + setbyte \dst + 1, (\value >> 8) & 0xFF + setbyte \dst + 2, (\value >> 16) & 0xFF + setbyte \dst + 3, (\value >> 24) & 0xFF + .endm + + .macro copybyte dst, src + copyarray \dst, \src, 0x1 + .endm + + .macro copyhword dst, src + copyarray \dst, \src, 0x2 + .endm + + .macro copyword dst, src + copyarray \dst, \src, 0x4 + .endm + + .macro jumpifbytenotequal byte1, byte2, jumpptr + jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifbyteequal byte1, byte2, jumpptr + jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifmove move, jumpptr + jumpifhalfword EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifnotmove move, jumpptr + jumpifhalfword NOT_EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifstatus3 bank, status, jumpptr + jumpifstatus3condition \bank, \status, 0x0, \jumpptr + .endm + + .macro jumpifnostatus3 bank, status, jumpptr + jumpifstatus3condition \bank, \status, 0x1, \jumpptr + .endm + + .macro jumpifmovehadnoeffect jumpptr + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, \jumpptr + .endm + + .macro jumpifbattletype flags, jumpptr + jumpifhalfword COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr + .endm + + .macro jumpifnotbattletype flags, jumpptr + jumpifhalfword NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr + .endm diff --git a/include/macros/contest_ai_script.inc b/include/macros/contest_ai_script.inc new file mode 100644 index 000000000..05d70e351 --- /dev/null +++ b/include/macros/contest_ai_script.inc @@ -0,0 +1,506 @@ +@ Add a positive/negative value to the score of the move being evaluated. + + .macro score score + .byte 0x00 + .byte \score + .endm + +@ turn (AKA "Appeal No.") + + .macro get_turn + .byte 0x01 + .endm + + .macro if_turn_less_than param, addr + .byte 0x02 + .byte \param + .4byte \addr + .endm + + .macro if_turn_more_than param, addr + .byte 0x03 + .byte \param + .4byte \addr + .endm + + .macro if_turn_eq param, addr + .byte 0x04 + .byte \param + .4byte \addr + .endm + + .macro if_turn_not_eq param, addr + .byte 0x05 + .byte \param + .4byte \addr + .endm + +@ audience excitement + + .macro get_excitement + .byte 0x06 + .endm + + .macro if_excitement_less_than param, addr + .byte 0x07 + .byte \param + .4byte \addr + .endm + + .macro if_excitement_more_than param, addr + .byte 0x08 + .byte \param + .4byte \addr + .endm + + .macro if_excitement_eq param, addr + .byte 0x09 + .byte \param + .4byte \addr + .endm + + .macro if_excitement_not_eq param, addr + .byte 0x0A + .byte \param + .4byte \addr + .endm + +@ the order that the user goes in the current turn + + .macro get_user_order + .byte 0x0B + .endm + + .macro if_user_order_less_than param addr + .byte 0x0C + .byte \param + .4byte \addr + .endm + + .macro if_user_order_more_than param addr + .byte 0x0D + .byte \param + .4byte \addr + .endm + + .macro if_user_order_eq param addr + .byte 0x0E + .byte \param + .4byte \addr + .endm + + .macro if_user_order_not_eq param addr + .byte 0x0F + .byte \param + .4byte \addr + .endm + +@ user condition + + .macro get_user_condition + .byte 0x10 + .endm + + .macro if_user_condition_less_than param, addr + .byte 0x11 + .byte \param + .4byte \addr + .endm + + .macro if_user_condition_more_than param, addr + .byte 0x12 + .byte \param + .4byte \addr + .endm + + .macro if_user_condition_eq param, addr + .byte 0x13 + .byte \param + .4byte \addr + .endm + + .macro if_user_condition_not_eq param, addr + .byte 0x14 + .byte \param + .4byte \addr + .endm + +@ 15 +@ 16 +@ 17 +@ 18 +@ 19 +@ 1A +@ 1B +@ 1C +@ 1D +@ 1E + +@ contest type + + .macro get_contest_type + .byte 0x1F + .endm + + .macro if_contest_type_eq param, addr + .byte 0x20 + .byte \param + .4byte \addr + .endm + + .macro if_contest_type_not_eq param, addr + .byte 0x21 + .byte \param + .4byte \addr + .endm + +@ move excitement (change in excitement due to move) + + .macro get_move_excitement + .byte 0x22 + .endm + + .macro if_move_excitement_less_than param, addr + .byte 0x23 + .byte \param + .4byte \addr + .endm + + .macro if_move_excitement_more_than param, addr + .byte 0x24 + .byte \param + .4byte \addr + .endm + + .macro if_move_excitement_eq param, addr + .byte 0x25 + .byte \param + .4byte \addr + .endm + + .macro if_move_excitement_not_eq param, addr + .byte 0x26 + .byte \param + .4byte \addr + .endm + +@ move effect + + .macro get_effect + .byte 0x27 + .endm + + .macro if_effect_eq param, addr + .byte 0x28 + .byte \param + .4byte \addr + .endm + + .macro if_effect_not_eq param, addr + .byte 0x29 + .byte \param + .4byte \addr + .endm + +@ move effect type + + .macro get_effect_type + .byte 0x2A + .endm + + .macro if_effect_type_eq param, addr + .byte 0x2B + .byte \param + .4byte \addr + .endm + + .macro if_effect_type_not_eq param, addr + .byte 0x2C + .byte \param + .4byte \addr + .endm + +@ whether the current move is the most appealing in the user's moveset + + .macro check_most_appealing_move + .byte 0x2D + .endm + + .macro if_most_appealing_move addr + .byte 0x2E + .4byte \addr + .endm + +@ 2F +@ 30 +@ 31 +@ 32 +@ 33 +@ 34 +@ 35 +@ 36 +@ 37 +@ 38 +@ 39 +@ 3A + +@ number of times current move has been used + + .macro get_move_used_count + .byte 0x3B + .endm + + .macro if_move_used_count_less_than param, addr + .byte 0x3C + .byte \param + .4byte \addr + .endm + + .macro if_move_used_count_more_than param, addr + .byte 0x3D + .byte \param + .4byte \addr + .endm + + .macro if_move_used_count_eq param, addr + .byte 0x3E + .byte \param + .4byte \addr + .endm + + .macro if_move_used_count_not_eq param, addr + .byte 0x3F + .byte \param + .4byte \addr + .endm + +@ whether the current move is a combo starter (with another move in the moveset) + + .macro check_combo_starter + .byte 0x40 + .endm + + .macro if_combo_starter addr + .byte 0x41 + .4byte \addr + .endm + + .macro if_not_combo_starter addr + .byte 0x42 + .4byte \addr + .endm + +@ whether the current move is a combo finisher (with another move in the moveset) + + .macro check_combo_finisher + .byte 0x43 + .endm + + .macro if_combo_finisher addr + .byte 0x44 + .4byte \addr + .endm + + .macro if_not_combo_finisher addr + .byte 0x45 + .4byte \addr + .endm + +@ whether the current move would finish a combo + + .macro check_would_finish_combo + .byte 0x46 + .endm + + .macro if_would_finish_combo addr + .byte 0x47 + .4byte \addr + .endm + + .macro if_would_not_finish_combo addr + .byte 0x48 + .4byte \addr + .endm + +@ condition of mon (indexed by order) + + .macro get_condition mon + .byte 0x49 + .byte \mon + .endm + + .macro if_condition_less_than mon, value, addr + .byte 0x4A + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_condition_more_than mon, value, addr + .byte 0x4B + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_condition_eq mon, value, addr + .byte 0x4C + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_condition_not_eq mon, value, addr + .byte 0x4D + .byte \mon + .byte \value + .4byte \addr + .endm + +@ whether the mon used a combo starter move +@ Even though this value is always 1 or 0 (i.e. TRUE/FALSE), +@ there are less-than and greater-than comparison operations for some reason. + + .macro get_used_combo_starter mon + .byte 0x4E + .byte \mon + .endm + + .macro if_used_combo_starter_less_than mon, value, addr + .byte 0x4F + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_used_combo_starter_more_than mon, value, addr + .byte 0x50 + .byte \mon + .byte \value + .4byte \addr + .endm + + + .macro if_used_combo_starter_eq mon, value, addr + .byte 0x51 + .byte \mon + .byte \value + .4byte \addr + .endm + + .macro if_used_combo_starter_not_eq mon, value, addr + .byte 0x52 + .byte \mon + .byte \value + .4byte \addr + .endm + +@ whether the mon can make an appeal + + .macro check_can_participate mon + .byte 0x53 + .byte \mon + .endm + + .macro if_can_participate mon, addr + .byte 0x54 + .byte \mon + .4byte \addr + .endm + + .macro if_cannot_participate mon, addr + .byte 0x55 + .byte \mon + .4byte \addr + .endm + +@ 56 +@ 57 + + .macro contest_58 param addr + .byte 0x58 + .byte \param + .4byte \addr + .endm + +@ 59 +@ 5A +@ 5B +@ 5C +@ 5D +@ 5E +@ 5F +@ 60 +@ 61 +@ 62 +@ 63 +@ 64 +@ 65 +@ 66 +@ 67 +@ 68 +@ 69 +@ 6A +@ 6B +@ 6C +@ 6D +@ 6E +@ 6F +@ 70 +@ 71 +@ 72 +@ 73 +@ 74 +@ 75 +@ 76 +@ 77 +@ 78 +@ 79 +@ 7A +@ 7B +@ 7C + + .macro if_random param addr + .byte 0x7D + .byte \param + .4byte \addr + .endm + +@ 7E + + .macro jump addr + .byte 0x7F + .4byte \addr + .endm + + .macro call addr + .byte 0x80 + .4byte \addr + .endm + + .macro end + .byte 0x81 + .endm + + .macro check_user_has_exciting_move + .byte 0x82 + .endm + + .macro if_user_has_exciting_move addr + .byte 0x83 + .4byte \addr + .endm + + .macro if_user_doesnt_have_exciting_move addr + .byte 0x84 + .4byte \addr + .endm + +@ 85 +@ 86 + + .macro if_effect_in_user_moveset param addr + .byte 0x87 + .2byte \param + .4byte \addr + .endm diff --git a/include/macros/ec.inc b/include/macros/ec.inc new file mode 100644 index 000000000..d3fd45c2f --- /dev/null +++ b/include/macros/ec.inc @@ -0,0 +1,8 @@ + + .macro ec_duplicates count + .2byte 0xff00 + \count + .endm + + .macro ec_words_by_letter label + .2byte (gEasyChatWordsByLetter_\label - gEasyChatWordsAlphabetized) / 2 + .endm diff --git a/include/macros/event.inc b/include/macros/event.inc new file mode 100644 index 000000000..fcbd3a055 --- /dev/null +++ b/include/macros/event.inc @@ -0,0 +1,1481 @@ + @ Does nothing. + .macro nop + .byte 0x00 + .endm + + @ Does nothing. + .macro nop1 + .byte 0x01 + .endm + + @ Terminates script execution. + .macro end + .byte 0x02 + .endm + + @ Jumps back to after the last-executed call statement, and continues script execution from there. + .macro return + .byte 0x03 + .endm + + @ Jumps to destination and continues script execution from there. The location of the calling script is remembered and can be returned to later. + .macro call destination + .byte 0x04 + .4byte \destination + .endm + + @ Jumps to destination and continues script execution from there. + .macro goto destination + .byte 0x05 + .4byte \destination + .endm + + @ If the result of the last comparison matches condition (see Comparison operators), jumps to destination and continues script execution from there. + .macro goto_if condition, destination + .byte 0x06 + .byte \condition + .4byte \destination + .endm + + @ If the result of the last comparison matches condition (see Comparison operators), calls destination. + .macro call_if condition, destination + .byte 0x07 + .byte \condition + .4byte \destination + .endm + + @ Jumps to the standard function at index function. + .macro gotostd function + .byte 0x08 + .byte \function + .endm + + @ Calls the standard function at index function. + .macro callstd function + .byte 0x09 + .byte \function + .endm + + @ If the result of the last comparison matches condition (see Comparison operators), jumps to the standard function at index function. + .macro gotostd_if condition, function + .byte 0x0a + .byte \condition + .byte \function + .endm + + @ If the result of the last comparison matches condition (see Comparison operators), calls the standard function at index function. + .macro callstd_if condition, function + .byte 0x0b + .byte \condition + .byte \function + .endm + + @ Executes a script stored in a default RAM location. + .macro gotoram + .byte 0x0c + .endm + + @ Terminates script execution and "resets the script RAM". + .macro killscript + .byte 0x0d + .endm + + @ Sets some status related to Mystery Event. + .macro setmysteryeventstatus value + .byte 0x0e + .byte \value + .endm + + @ Sets the specified script bank to value. + .macro loadword destination, value + .byte 0x0f + .byte \destination + .4byte \value + .endm + + @ Sets the specified script bank to value. + .macro loadbyte destination, value + .byte 0x10 + .byte \destination + .byte \value + .endm + + @ Sets the byte at offset to value. + .macro writebytetoaddr value, offset + .byte 0x11 + .byte \value + .4byte \offset + .endm + + @ Copies the byte value at source into the specified script bank. + .macro loadbytefromaddr destination, source + .byte 0x12 + .byte \destination + .4byte \source + .endm + + @ Not sure. Judging from XSE's description I think it takes the least-significant byte in bank source and writes it to destination. + .macro setptrbyte source, destination + .byte 0x13 + .byte \source + .4byte \destination + .endm + + @ Copies the contents of bank source into bank destination. + .macro copylocal destination, source + .byte 0x14 + .byte \destination + .byte \source + .endm + + @ Copies the byte at source to destination, replacing whatever byte was previously there. + .macro copybyte destination, source + .byte 0x15 + .4byte \destination + .4byte \source + .endm + + @ Changes the value of destination to value. + .macro setvar destination, value + .byte 0x16 + .2byte \destination + .2byte \value + .endm + + @ Changes the value of destination by adding value to it. Overflow is not prevented (0xFFFF + 1 = 0x0000). + .macro addvar destination, value + .byte 0x17 + .2byte \destination + .2byte \value + .endm + + @ Changes the value of destination by subtracting value to it. Overflow is not prevented (0x0000 - 1 = 0xFFFF). + .macro subvar destination, value + .byte 0x18 + .2byte \destination + .2byte \value + .endm + + @ Copies the value of source into destination. + .macro copyvar destination, source + .byte 0x19 + .2byte \destination + .2byte \source + .endm + + @ If source is not a variable, then this function acts like setvar. Otherwise, it acts like copyvar. + .macro setorcopyvar destination, source + .byte 0x1a + .2byte \destination + .2byte \source + .endm + + @ Compares the values of script banks a and b, after forcing the values to bytes. + .macro compare_local_to_local byte1, byte2 + .byte 0x1b + .byte \byte1 + .byte \byte2 + .endm + + @ Compares the least-significant byte of the value of script bank a to a fixed byte value (b). + .macro compare_local_to_value a, b + .byte 0x1c + .byte \a + .byte \b + .endm + + @ Compares the least-significant byte of the value of script bank a to the byte located at offset b. + .macro compare_local_to_addr a, b + .byte 0x1d + .byte \a + .4byte \b + .endm + + @ Compares the byte located at offset a to the least-significant byte of the value of script bank b. + .macro compare_addr_to_local a, b + .byte 0x1e + .4byte \a + .byte \b + .endm + + @ Compares the byte located at offset a to a fixed byte value (b). + .macro compare_addr_to_value a, b + .byte 0x1f + .4byte \a + .byte \b + .endm + + @ Compares the byte located at offset a to the byte located at offset b. + .macro compare_addr_to_addr a, b + .byte 0x20 + .4byte \a + .4byte \b + .endm + + @ Compares the value of `var` to a fixed word value (b). + .macro compare_var_to_value var, value + .byte 0x21 + .2byte \var + .2byte \value + .endm + + @ Compares the value of `var1` to the value of `var2`. + .macro compare_var_to_var var1, var2 + .byte 0x22 + .2byte \var1 + .2byte \var2 + .endm + + @ Generic compare macro which attempts to deduce argument types based on their values + @ Any values between 0x4000 to 0x4FFF and 0x8000 to 0x8FFF are considered event variable identifiers + .macro compare arg1, arg2 + .if (((\arg1) >> 12) == 4 || ((\arg1) >> 12) == 8) && (((\arg2) >> 12) == 4 || ((\arg2) >> 12) == 8) + compare_var_to_var (\arg1), (\arg2) + .elseif (((\arg1) >> 12) == 4 || ((\arg1) >> 12) == 8) && ((\arg2) >= -0xFFFF && (\arg2) <= 0xFFFF) + compare_var_to_value (\arg1), ((\arg2) & 0xFFFF) + .else + .error "Invalid arguments for 'compare'" + .endif + .endm + + @ Calls the native C function stored at `func`. + .macro callnative func + .byte 0x23 + .4byte \func + .endm + + @ Replaces the script with the function stored at `func`. Execution returns to the bytecode script when func returns TRUE. + .macro gotonative func + .byte 0x24 + .4byte \func + .endm + + @ Calls a special function; that is, a function designed for use by scripts and listed in a table of pointers. + .macro special function + .byte 0x25 + .2byte SPECIAL_\function + .endm + + @ Calls a special function. That function's output (if any) will be written to the variable you specify. + .macro specialvar output, function + .byte 0x26 + .2byte \output + .2byte SPECIAL_\function + .endm + + @ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang). + .macro waitstate + .byte 0x27 + .endm + + @ Blocks script execution for time (frames? milliseconds?). + .macro delay time + .byte 0x28 + .2byte \time + .endm + + @ Sets a to 1. + .macro setflag a + .byte 0x29 + .2byte \a + .endm + + @ Sets a to 0. + .macro clearflag a + .byte 0x2a + .2byte \a + .endm + + @ Compares a to 1. + .macro checkflag a + .byte 0x2b + .2byte \a + .endm + + @ Initializes the RTC`s local time offset to the given hour and minute. In FireRed, this command is a nop. + .macro initclock hour, minute + .byte 0x2c + .2byte \hour + .2byte \minute + .endm + + @ Runs time based events. In FireRed, this command is a nop. + .macro dodailyevents + .byte 0x2d + .endm + + @ Sets the values of variables 0x8000, 0x8001, and 0x8002 to the current hour, minute, and second. In FRLG, this command sets those variables to zero. + .macro gettime + .byte 0x2e + .endm + + @ Plays the specified (sound_number) sound. Only one sound may play at a time, with newer ones interrupting older ones. + .macro playse sound_number + .byte 0x2f + .2byte \sound_number + .endm + + @ Blocks script execution until the currently-playing sound (triggered by playse) finishes playing. + .macro waitse + .byte 0x30 + .endm + + @ Plays the specified (fanfare_number) fanfare. + .macro playfanfare fanfare_number + .byte 0x31 + .2byte \fanfare_number + .endm + + @ Blocks script execution until all currently-playing fanfares finish. + .macro waitfanfare + .byte 0x32 + .endm + + @ Plays the specified (song_number) song. The byte is apparently supposed to be 0x00. + .macro playbgm song_number, unknown + .byte 0x33 + .2byte \song_number + .byte \unknown + .endm + + @ Saves the specified (song_number) song to be played later. + .macro savebgm song_number + .byte 0x34 + .2byte \song_number + .endm + + @ Crossfades the currently-playing song into the map's default song. + .macro fadedefaultbgm + .byte 0x35 + .endm + + @ Crossfades the currently-playng song into the specified (song_number) song. + .macro fadenewbgm song_number + .byte 0x36 + .2byte \song_number + .endm + + @ Fades out the currently-playing song. + .macro fadeoutbgm speed + .byte 0x37 + .byte \speed + .endm + + @ Fades the previously-playing song back in. + .macro fadeinbgm speed + .byte 0x38 + .byte \speed + .endm + + @ Sends the player to Warp warp on Map bank.map. If the specified warp is 0xFF, then the player will instead be sent to (X, Y) on the map. + .macro warp map, warp, X, Y + .byte 0x39 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp that does not play a sound effect. + .macro warpsilent map, warp, X, Y + .byte 0x3a + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp that plays a door opening animation before stepping upwards into it. + .macro warpdoor map, warp, X, Y + .byte 0x3b + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Warps the player to another map using a hole animation. + .macro warphole map + .byte 0x3c + map \map + .endm + + @ Clone of warp that uses a teleport effect. It is apparently only used in R/S/E. + .macro warpteleport map, warp, X, Y + .byte 0x3d + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets the warp destination to be used later. + .macro setwarp map, warp, X, Y + .byte 0x3e + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets the warp destination that a warp to Warp 127 on Map 127.127 will connect to. Useful when a map has warps that need to go to script-controlled locations (i.e. elevators). + .macro setdynamicwarp map, warp, X, Y + .byte 0x3f + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets the destination that diving or emerging from a dive will take the player to. + .macro setdivewarp map, warp, X, Y + .byte 0x40 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets the destination that falling into a hole will take the player to. + .macro setholewarp map, warp, X, Y + .byte 0x41 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Retrieves the player's zero-indexed X- and Y-coordinates in the map, and stores them in the specified variables. + .macro getplayerxy X, Y + .byte 0x42 + .2byte \X + .2byte \Y + .endm + + @ Retrieves the number of Pokemon in the player's party, and stores that number in variable 0x800D (LASTRESULT). + .macro getpartysize + .byte 0x43 + .endm + + @ Attempts to add quantity of item index to the player's Bag. If the player has enough room, the item will be added and variable 0x800D (LASTRESULT) will be set to 0x0001; otherwise, LASTRESULT is set to 0x0000. + .macro giveitem index, quantity + .byte 0x44 + .2byte \index + .2byte \quantity + .endm + + @ Removes quantity of item index from the player's Bag. + .macro takeitem index, quantity + .byte 0x45 + .2byte \index + .2byte \quantity + .endm + + @ Checks if the player has enough space in their Bag to hold quantity more of item index. Sets variable 0x800D (LASTRESULT) to 0x0001 if there is room, or 0x0000 is there is no room. + .macro checkitemspace index, quantity + .byte 0x46 + .2byte \index + .2byte \quantity + .endm + + @ Checks if the player has quantity or more of item index in their Bag. Sets variable 0x800D (LASTRESULT) to 0x0001 if the player has enough of the item, or 0x0000 if they have fewer than quantity of the item. + .macro checkitem index, quantity + .byte 0x47 + .2byte \index + .2byte \quantity + .endm + + @ Checks which Bag pocket the specified (index) item belongs in, and writes the value to variable 0x800D (LASTRESULT). This script is used to show the name of the proper Bag pocket when the player receives an item via callstd (simplified to giveitem in XSE). + .macro checkitemtype index + .byte 0x48 + .2byte \index + .endm + + @ Adds a quantity amount of item index to the player's PC. Both arguments can be variables. + .macro givepcitem index, quantity + .byte 0x49 + .2byte \index + .2byte \quantity + .endm + + @ Checks for quantity amount of item index in the player's PC. Both arguments can be variables. + .macro checkpcitem index, quantity + .byte 0x4a + .2byte \index + .2byte \quantity + .endm + + @ Adds decoration to the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro givedecoration decoration + .byte 0x4b + .2byte \decoration + .endm + + @ Removes a decoration from the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro takedecoration decoration + .byte 0x4c + .2byte \decoration + .endm + + @ Checks for decoration in the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro checkdecor decoration + .byte 0x4d + .2byte \decoration + .endm + + @ Checks if the player has enough space in their PC to hold decoration. Sets variable 0x800D (LASTRESULT) to 0x0001 if there is room, or 0x0000 is there is no room. In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro checkdecorspace decoration + .byte 0x4e + .2byte \decoration + .endm + + @ Applies the movement data at movements to the specified (index) Object event. Also closes any standard message boxes that are still open. + @ This command in fact uses variables to access the Object event ID. So, for example, if you setvar 0x8000 to 0x3, and then use applymovementpos 0x8000 @move1, Object event 3 will have the movements at @move1 applied to them. + .macro applymovement index, movements, mapGroup, mapNum + .ifb \mapGroup + .byte 0x4f + .2byte \index + .4byte \movements + .else + .byte 0x50 + .2byte \index + .4byte \movements + .byte \mapGroup + .byte \mapNum + .endif + .endm + + @ Blocks script execution until the movements being applied to the specified (index) Object event finish. If the specified Object event is 0x0000, then the command will block script execution until all Object events affected by applymovement finish their movements. If the specified Object event is not currently being manipulated with applymovement, then this command does nothing. + .macro waitmovement index, mapBank, mapNum + .ifb \mapBank + .byte 0x51 + .2byte \index + .else + .byte 0x52 + .2byte \index + .byte \mapBank + .byte \mapNum + .endif + .endm + + @ Attempts to hide the specified (local_ID, a local ID) Object event on the specified map, by setting its visibility flag if it has a valid one. If the Object does not have a valid visibility flag, this command does nothing. + @ If no map is specified, then the current map is used + .macro removeobject localId, mapGroup, mapNum + .ifb \mapGroup + .byte 0x53 + .2byte \localId + .else + .byte 0x54 + .2byte \localId + .byte \mapGroup + .byte \mapNum + .endif + .endm + + .macro addobject localId, mapGroup, mapNum + .ifb \mapGroup + .byte 0x55 + .2byte \localId + .else + .byte 0x56 + .2byte \localId + .byte \mapGroup + .byte \mapNum + .endif + .endm + + @ Sets the specified (index) Object's position on the current map. + .macro setobjectxy index, x, y + .byte 0x57 + .2byte \index + .2byte \x + .2byte \y + .endm + + .macro showobjectat index, map + .byte 0x58 + .2byte \index + map \map + .endm + + .macro hideobjectat index, map + .byte 0x59 + .2byte \index + map \map + .endm + + @ If the script was called by a Object event, then that Object will turn to face toward the tile that the player is stepping off of. + .macro faceplayer + .byte 0x5a + .endm + + .macro turnobject index, direction + .byte 0x5b + .2byte \index + .byte \direction + .endm + + @ If the Trainer flag for Trainer index is not set, this command does absolutely nothing. + .macro trainerbattle type, trainer, word, pointer1, pointer2, pointer3, pointer4 + .byte 0x5c + .byte \type + .2byte \trainer + .2byte \word + .if \type == 0 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == 1 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == 2 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == 3 + .4byte \pointer1 @ text + .elseif \type == 4 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == 5 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == 6 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .elseif \type == 7 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == 8 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .endif + .endm + + @ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this command behind-the-scenes), and blocks script execution until the battle finishes. + .macro trainerbattlebegin + .byte 0x5d + .endm + + @ Goes to address after the trainerbattle command (called by the battle functions, see battle_setup.c) + .macro gotopostbattlescript + .byte 0x5e + .endm + + @ Goes to address specified in the trainerbattle command (called by the battle functions, see battle_setup.c) + .macro gotobeatenscript + .byte 0x5f + .endm + + @ Compares Flag (trainer + 0x500) to 1. (If the flag is set, then the trainer has been defeated by the player.) + .macro checktrainerflag trainer + .byte 0x60 + .2byte \trainer + .endm + + @ Sets Flag (trainer + 0x500). + .macro settrainerflag trainer + .byte 0x61 + .2byte \trainer + .endm + + @ Clears Flag (trainer + 0x500). + .macro cleartrainerflag trainer + .byte 0x62 + .2byte \trainer + .endm + + .macro setobjectxyperm index, x, y + .byte 0x63 + .2byte \index + .2byte \x + .2byte \y + .endm + + .macro moveobjectoffscreen index + .byte 0x64 + .2byte \index + .endm + + .macro setobjectmovementtype word, byte + .byte 0x65 + .2byte \word + .byte \byte + .endm + + @ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the box and its text have been fully drawn. + .macro waitmessage + .byte 0x66 + .endm + + @ Starts displaying a standard message box containing the specified text. If text is a pointer, then the string at that offset will be loaded and used. If text is script bank 0, then the value of script bank 0 will be treated as a pointer to the text. (You can use loadpointer to place a string pointer in a script bank.) + .macro message text + .byte 0x67 + .4byte \text + .endm + + @ Closes the current message box. + .macro closemessage + .byte 0x68 + .endm + + @ Ceases movement for all Objects on-screen. + .macro lockall + .byte 0x69 + .endm + + @ If the script was called by an Object, then that Object's movement will cease. + .macro lock + .byte 0x6a + .endm + + @ Resumes normal movement for all Objects on-screen, and closes any standard message boxes that are still open. + .macro releaseall + .byte 0x6b + .endm + + @ If the script was called by an Object, then that Object's movement will resume. This command also closes any standard message boxes that are still open. + .macro release + .byte 0x6c + .endm + + @ Blocks script execution until the player presses any key. + .macro waitbuttonpress + .byte 0x6d + .endm + + @ Displays a YES/NO multichoice box at the specified coordinates, and blocks script execution until the user makes a selection. Their selection is stored in variable 0x800D (LASTRESULT); 0x0000 for "NO" or if the user pressed B, and 0x0001 for "YES". + .macro yesnobox x, y + .byte 0x6e + .byte \x + .byte \y + .endm + + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. If b is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. + .macro multichoice x, y, list, b + .byte 0x6f + .byte \x + .byte \y + .byte \list + .byte \b + .endm + + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If b is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. + .macro multichoicedefault x, y, list, default, b + .byte 0x70 + .byte \x + .byte \y + .byte \list + .byte \default + .byte \b + .endm + + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The per_row argument determines how many list items will be shown on a single row of the box. + .macro multichoicegrid x, y, list, per_row, B + .byte 0x71 + .byte \x + .byte \y + .byte \list + .byte \per_row + .byte \B + .endm + + .macro drawbox byte1, byte2, byte3, byte4 + .byte 0x72 + .byte \byte1 + .byte \byte2 + .byte \byte3 + .byte \byte4 + .endm + + .macro erasebox byte1, byte2, byte3, byte4 + .byte 0x73 + .byte \byte1 + .byte \byte2 + .byte \byte3 + .byte \byte4 + .endm + + .macro drawboxtext byte1, byte2, byte3, byte4 + .byte 0x74 + .byte \byte1 + .byte \byte2 + .byte \byte3 + .byte \byte4 + .endm + + @ Displays a box containing the front sprite for the specified (species) Pokemon species. + .macro drawmonpic species, x, y + .byte 0x75 + .2byte \species + .byte \x + .byte \y + .endm + + @ Hides all boxes displayed with drawmonpic. + .macro erasemonpic + .byte 0x76 + .endm + + @ Draws an image of the winner of the contest. In FireRed, this command is a nop. (The argument is discarded.) + .macro drawcontestwinner a + .byte 0x77 + .byte \a + .endm + + @ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille characters. + .macro braillemessage text + .byte 0x78 + .4byte \text + .endm + + @ Gives the player one of the specified (species) Pokemon at level level holding item. The unknown arguments should all be zeroes. + .macro givemon species, level, item, unknown1, unknown2, unknown3 + .byte 0x79 + .2byte \species + .byte \level + .2byte \item + .4byte \unknown1 + .4byte \unknown2 + .byte \unknown3 + .endm + + .macro giveegg species + .byte 0x7a + .2byte \species + .endm + + .macro setmonmove index, slot, move + .byte 0x7b + .byte \index + .byte \slot + .2byte \move + .endm + + @ Checks if at least one Pokemon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the first Pokemon that knows the move. If not, LASTRESULT is set to 0x0006. Variable 0x8004 is also set to this Pokemon's species. + .macro checkpartymove index + .byte 0x7c + .2byte \index + .endm + + @ Writes the name of the Pokemon at index species to the specified buffer. + .macro bufferspeciesname out, species + .byte 0x7d + .byte \out + .2byte \species + .endm + + @ Writes the name of the species of the first Pokemon in the player's party to the specified buffer. + .macro bufferleadmonspeciesname out + .byte 0x7e + .byte \out + .endm + + @ Writes the nickname of the Pokemon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer. + .macro bufferpartymonnick out, slot + .byte 0x7f + .byte \out + .2byte \slot + .endm + + @ Writes the name of the item at index item to the specified buffer. If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead. + .macro bufferitemname out, item + .byte 0x80 + .byte \out + .2byte \item + .endm + + @ Writes the name of the decoration at index decoration to the specified buffer. In FireRed, this command is a nop. + .macro bufferdecorationname out, decoration + .byte 0x81 + .byte \out + .2byte \decoration + .endm + + @ Writes the name of the move at index move to the specified buffer. + .macro buffermovename out, move + .byte 0x82 + .byte \out + .2byte \move + .endm + + @ Converts the value of input to a decimal string, and writes that string to the specified buffer. + .macro buffernumberstring out, input + .byte 0x83 + .byte \out + .2byte \input + .endm + + @ Writes the standard string identified by index to the specified buffer. This command has no protections in place at all, so specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption. + .macro bufferstdstring out, index + .byte 0x84 + .byte \out + .2byte \index + .endm + + @ Copies the string at offset to the specified buffer. + .macro bufferstring out, offset + .byte 0x85 + .byte \out + .4byte \offset + .endm + + @ Opens the Pokemart system, offering the specified products for sale. + .macro pokemart products + .byte 0x86 + .4byte \products + .endm + + @ Opens the Pokemart system and treats the list of items as decorations. + .macro pokemartdecoration products + .byte 0x87 + .4byte \products + .endm + + @ Apparent clone of pokemartdecoration. + .macro pokemartdecoration2 products + .byte 0x88 + .4byte \products + .endm + + @ Starts up the slot machine minigame. + .macro playslotmachine word + .byte 0x89 + .2byte \word + .endm + + @ Sets a berry tree's specific berry and growth stage. In FireRed, this command is a nop. + .macro setberrytree tree_id, berry, growth_stage + .byte 0x8a + .byte \tree_id + .byte \berry + .byte \growth_stage + .endm + + @ This allows you to choose a Pokemon to use in a contest. In FireRed, this command sets the byte at 0x03000EA8 to 0x01. + .macro choosecontestmon + .byte 0x8b + .endm + + @ Starts a contest. In FireRed, this command is a nop. + .macro startcontest + .byte 0x8c + .endm + + @ Shows the results of a contest. In FireRed, this command is a nop. + .macro showcontestresults + .byte 0x8d + .endm + + @ Starts a contest over a link connection. In FireRed, this command is a nop. + .macro contestlinktransfer + .byte 0x8e + .endm + + @ Stores a random integer between 0 and limit in variable 0x800D (LASTRESULT). + .macro random limit + .byte 0x8f + .2byte \limit + .endm + + @ If check is 0x00, this command adds value to the player's money. + .macro givemoney value, check + .byte 0x90 + .4byte \value + .byte \check + .endm + + @ If check is 0x00, this command subtracts value from the player's money. + .macro takemoney value, check + .byte 0x91 + .4byte \value + .byte \check + .endm + + @ If check is 0x00, this command will check if the player has value or more money; script variable 0x800D (LASTRESULT) is set to 0x0001 if the player has enough money, or 0x0000 if the do not. + .macro checkmoney value, check + .byte 0x92 + .4byte \value + .byte \check + .endm + + @ Spawns a secondary box showing how much money the player has. + .macro showmoneybox x, y + .byte 0x93 + .byte \x + .byte \y + .endm + + @ Hides the secondary box spawned by showmoney. + .macro hidemoneybox x, y + .byte 0x94 + .byte \x + .byte \y + .endm + + @ Updates the secondary box spawned by showmoney. Consumes but does not use arguments. + .macro updatemoneybox x, y + .byte 0x95 + .byte \x + .byte \y + .endm + + @ Gets the price reduction for the index given. In FireRed, this command is a nop. + .macro getpricereduction index + .byte 0x96 + .2byte \index + .endm + + @ Fades the screen to and from black and white. Mode 0x00 fades from black, mode 0x01 fades out to black, mode 0x2 fades in from white, and mode 0x3 fades out to white. + .macro fadescreen effect + .byte 0x97 + .byte \effect + .endm + + @ Fades the screen to and from black and white. Mode 0x00 fades from black, mode 0x01 fades out to black, mode 0x2 fades in from white, and mode 0x3 fades out to white. Other modes may exist. + .macro fadescreenspeed effect, speed + .byte 0x98 + .byte \effect + .byte \speed + .endm + + .macro setflashradius word + .byte 0x99 + .2byte \word + .endm + + .macro animateflash byte + .byte 0x9a + .byte \byte + .endm + + .macro messageautoscroll pointer + .byte 0x9b + .4byte \pointer + .endm + + @ Executes the specified field move animation. + .macro dofieldeffect animation + .byte 0x9c + .2byte \animation + .endm + + @ Sets up the field effect argument argument with the value value. + .macro setfieldeffectargument argument, param + .byte 0x9d + .byte \argument + .2byte \param + .endm + + @ Blocks script execution until all playing field move animations complete. + .macro waitfieldeffect animation + .byte 0x9e + .2byte \animation + .endm + + @ Sets which healing place the player will return to if all of the Pokemon in their party faint. + .macro setrespawn heallocation + .byte 0x9f + .2byte \heallocation + .endm + + @ Checks the player's gender. If male, then 0x0000 is stored in variable 0x800D (LASTRESULT). If female, then 0x0001 is stored in LASTRESULT. + .macro checkplayergender + .byte 0xa0 + .endm + + @ Plays the specified (species) Pokemon's cry. You can use waitcry to block script execution until the sound finishes. + .macro playmoncry species, effect + .byte 0xa1 + .2byte \species + .2byte \effect + .endm + + @ Changes the metatile at (x, y) on the current map. + .macro setmetatile x, y, metatile_number, tile_attrib + .byte 0xa2 + .2byte \x + .2byte \y + .2byte \metatile_number + .2byte \tile_attrib + .endm + + @ Queues a weather change to the default weather for the map. + .macro resetweather + .byte 0xa3 + .endm + + @ Queues a weather change to type weather. + .macro setweather type + .byte 0xa4 + .2byte \type + .endm + + @ Executes the weather change queued with resetweather or setweather. The current weather will smoothly fade into the queued weather. + .macro doweather + .byte 0xa5 + .endm + + @ This command manages cases in which maps have tiles that change state when stepped on (specifically, cracked/breakable floors). + .macro setstepcallback subroutine + .byte 0xa6 + .byte \subroutine + .endm + + .macro setmaplayoutindex index + .byte 0xa7 + .2byte \index + .endm + + .macro setobjectpriority index, map, priority + .byte 0xa8 + .2byte \index + map \map + .byte \priority + .endm + + .macro resetobjectpriority index, map + .byte 0xa9 + .2byte \index + map \map + .endm + + .macro createvobject sprite, byte2, x, y, elevation, direction + .byte 0xaa + .byte \sprite + .byte \byte2 + .2byte \x + .2byte \y + .byte \elevation + .byte \direction + .endm + + .macro turnvobject index, direction + .byte 0xab + .byte \index + .byte \direction + .endm + + @ Opens the door metatile at (X, Y) with an animation. + .macro opendoor x, y + .byte 0xac + .2byte \x + .2byte \y + .endm + + @ Closes the door metatile at (X, Y) with an animation. + .macro closedoor x, y + .byte 0xad + .2byte \x + .2byte \y + .endm + + @ Waits for the door animation started with opendoor or closedoor to finish. + .macro waitdooranim + .byte 0xae + .endm + + @ Sets the door tile at (x, y) to be open without an animation. + .macro setdooropen x, y + .byte 0xaf + .2byte \x + .2byte \y + .endm + + @ Sets the door tile at (x, y) to be closed without an animation. + .macro setdoorclosed x, y + .byte 0xb0 + .2byte \x + .2byte \y + .endm + + @ In FireRed, this command is a nop. + .macro addelevmenuitem + .byte 0xb1 + .endm + + @ In FireRed and Emerald, this command is a nop. + .macro showelevmenu + .byte 0xb2 + .endm + + .macro checkcoins out + .byte 0xb3 + .2byte \out + .endm + + .macro givecoins count + .byte 0xb4 + .2byte \count + .endm + + .macro takecoins count + .byte 0xb5 + .2byte \count + .endm + + @ Prepares to start a wild battle against a species at Level level holding item. Running this command will not affect normal wild battles. You start the prepared battle with dowildbattle. + .macro setwildbattle species, level, item + .byte 0xb6 + .2byte \species + .byte \level + .2byte \item + .endm + + @ Starts a wild battle against the Pokemon generated by setwildbattle. Blocks script execution until the battle finishes. + .macro dowildbattle + .byte 0xb7 + .endm + + .macro setvaddress long, word + .byte 0xb8 + .4byte \long + .2byte \word + .endm + + .macro vgoto pointer + .byte 0xb9 + .4byte \pointer + .endm + + .macro vcall pointer + .byte 0xba + .4byte \pointer + .endm + + .macro vgoto_if byte, pointer + .byte 0xbb + .byte \byte + .4byte \pointer + .endm + + .macro vcall_if byte, pointer + .byte 0xbc + .byte \byte + .4byte \pointer + .endm + + .macro vmessage pointer + .byte 0xbd + .4byte \pointer + .endm + + .macro vloadptr pointer + .byte 0xbe + .4byte \pointer + .endm + + .macro vbufferstring byte, pointer + .byte 0xbf + .byte \byte + .4byte \pointer + .endm + + @ Spawns a secondary box showing how many Coins the player has. + .macro showcoinsbox x, y + .byte 0xc0 + .byte \x + .byte \y + .endm + + @ Hides the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. + .macro hidecoinsbox x, y + .byte 0xc1 + .byte \x + .byte \y + .endm + + @ Updates the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. + .macro updatecoinsbox x, y + .byte 0xc2 + .byte \x + .byte \y + .endm + + @ Increases the value of the specified game stat by 1. The stat's value will not be allowed to exceed 0x00FFFFFF. + .macro incrementgamestat stat + .byte 0xc3 + .byte \stat + .endm + + @ Sets the destination that using an Escape Rope or Dig will take the player to. + .macro setescapewarp map, warp, x, y + .byte 0xc4 + map \map + .byte \warp + .2byte \x + .2byte \y + .endm + + @ Blocks script execution until cry finishes. + .macro waitmoncry + .byte 0xc5 + .endm + + @ Writes the name of the specified (box) PC box to the specified buffer. + .macro bufferboxname out, box + .byte 0xc6 + .byte \out + .2byte \box + .endm + + @ Sets the color of the text in standard message boxes. 0x00 produces blue (male) text, 0x01 produces red (female) text, 0xFF resets the color to the default for the current OW's gender, and all other values produce black text. + .macro textcolor color + .byte 0xc7 + .byte \color + .endm + + @ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of the screen when the Main Menu is opened. + .macro loadhelp pointer + .byte 0xc8 + .4byte \pointer + .endm + + @ The exact purpose of this command is unknown, but it is related to the blue help-text box that appears on the bottom of the screen when the Main Menu is opened. + .macro unloadhelp + .byte 0xc9 + .endm + + @ After using this command, all standard message boxes will use the signpost frame. + .macro signmsg + .byte 0xca + .endm + + @ Ends the effects of signmsg, returning message box frames to normal. + .macro normalmsg + .byte 0xcb + .endm + + @ Compares the value of a hidden variable to a dword. + .macro comparehiddenvar a, value + .byte 0xcc + .byte \a + .4byte \value + .endm + +@ Supplementary + + .macro goto_if_trainer_not_defeated opponent, dest + checktrainerflag \opponent + goto_if 0, \dest + .endm + + .macro goto_if_trainer_defeated opponent, dest + checktrainerflag \opponent + goto_if 1, \dest + .endm + + .macro call_if_trainer_not_defeated opponent, dest + checktrainerflag \opponent + call_if 0, \dest + .endm + + .macro call_if_trainer_defeated opponent, dest + checktrainerflag \opponent + call_if 1, \dest + .endm + + .macro goto_if_unset flag, dest + checkflag \flag + goto_if 0, \dest + .endm + + .macro goto_if_set flag, dest + checkflag \flag + goto_if 1, \dest + .endm + + .macro goto_if_lt dest @ LESS THAN + goto_if 0, \dest + .endm + + .macro goto_if_eq dest @ EQUAL + goto_if 1, \dest + .endm + + .macro goto_if_gt dest @ GREATER THAN + goto_if 2, \dest + .endm + + .macro goto_if_le dest @ LESS THAN OR EQUAL + goto_if 3, \dest + .endm + + .macro goto_if_ge dest @ GREATER THAN OR EQUAL + goto_if 4, \dest + .endm + + .macro goto_if_ne dest @ NOT EQUAL + goto_if 5, \dest + .endm + + .macro call_if_unset flag, dest + checkflag \flag + call_if 0, \dest + .endm + + .macro call_if_set flag, dest + checkflag \flag + call_if 1, \dest + .endm + + .macro call_if_lt dest @ LESS THAN + call_if 0, \dest + .endm + + .macro call_if_eq dest @ EQUAL + call_if 1, \dest + .endm + + .macro call_if_gt dest @ GREATER THAN + call_if 2, \dest + .endm + + .macro call_if_le dest @ LESS THAN OR EQUAL + call_if 3, \dest + .endm + + .macro call_if_ge dest @ GREATER THAN OR EQUAL + call_if 4, \dest + .endm + + .macro call_if_ne dest @ NOT EQUAL + call_if 5, \dest + .endm + + .macro switch var + copyvar VAR_SPECIAL_0, \var + .endm + + .macro case condition, dest + compare_var_to_value VAR_SPECIAL_0, \condition + goto_if_eq \dest + .endm + + .macro msgbox text, type=4 + loadword 0, \text + callstd \type + .endm + + @ Message box types + MSGBOX_YESNO = 5 + + YES = 1 + NO = 0 + + .macro giveitem_std item, amount=1, function=0 + setorcopyvar VAR_SPECIAL_0, \item + setorcopyvar VAR_SPECIAL_1, \amount + callstd \function + .endm + + .macro givedecoration_std decoration + setorcopyvar VAR_SPECIAL_0, \decoration + callstd 7 + .endm diff --git a/include/macros/field_effect_script.inc b/include/macros/field_effect_script.inc new file mode 100644 index 000000000..d5895b0ef --- /dev/null +++ b/include/macros/field_effect_script.inc @@ -0,0 +1,42 @@ + .macro loadtiles address + .byte 0 + .4byte \address + .endm + + .macro loadfadedpal address + .byte 1 + .4byte \address + .endm + + .macro loadpal address + .byte 2 + .4byte \address + .endm + + .macro callnative address + .byte 3 + .4byte \address + .endm + + .macro end + .byte 4 + .endm + + .macro loadgfx_callnative tiles_address, palette_address, function_address + .byte 5 + .4byte \tiles_address + .4byte \palette_address + .4byte \function_address + .endm + + .macro loadtiles_callnative tiles_address, function_address + .byte 6 + .4byte \tiles_address + .4byte \function_address + .endm + + .macro loadfadedpal_callnative palette_address, function_address + .byte 7 + .4byte \palette_address + .4byte \function_address + .endm diff --git a/include/macros/function.inc b/include/macros/function.inc new file mode 100644 index 000000000..67fb373a8 --- /dev/null +++ b/include/macros/function.inc @@ -0,0 +1,29 @@ + .macro arm_func_start name + .align 2, 0 + .global \name + .arm + .type \name, function + .endm + + .macro arm_func_end name + .size \name, .-\name + .endm + + .macro thumb_func_start name + .align 2, 0 + .global \name + .thumb + .thumb_func + .type \name, function + .endm + + .macro non_word_aligned_thumb_func_start name + .global \name + .thumb + .thumb_func + .type \name, function + .endm + + .macro thumb_func_end name + .size \name, .-\name + .endm diff --git a/include/macros/m4a.inc b/include/macros/m4a.inc new file mode 100644 index 000000000..6c5abc09b --- /dev/null +++ b/include/macros/m4a.inc @@ -0,0 +1,13 @@ + .macro song label, music_player, unknown + .4byte \label + .2byte \music_player + .2byte \unknown + .endm + + .macro music_player info_struct, track_struct, unknown_1, unknown_2 + .4byte \info_struct + .4byte \track_struct + .byte \unknown_1 + .space 1 + .2byte \unknown_2 + .endm diff --git a/include/macros/map.inc b/include/macros/map.inc new file mode 100644 index 000000000..db37d9346 --- /dev/null +++ b/include/macros/map.inc @@ -0,0 +1,96 @@ + .macro map map_id + .byte \map_id >> 8 @ map group + .byte \map_id & 0xFF @ map num + .endm + + .macro map_script type, address + .byte \type + .4byte \address + .endm + + .macro map_script_2 word1, word2, address + .2byte \word1 + .2byte \word2 + .4byte \address + .endm + + .macro object_event byte1, word1, byte2, byte3, byte4, byte5, byte6, byte7, byte8, byte9, byte10, byte11, byte12, byte13, byte14, script, word2, byte15, byte16 + .byte \byte1 + .2byte \word1 + .byte \byte2, \byte3, \byte4, \byte5, \byte6, \byte7, \byte8, \byte9, \byte10, \byte11, \byte12, \byte13, \byte14 + .4byte \script + .2byte \word2 + .byte \byte15, \byte16 + inc _num_npcs + .endm + + .macro warp_def x, y, byte, warp, map_id + .2byte \x, \y + .byte \byte, \warp + .byte \map_id & 0xFF @ map num + .byte \map_id >> 8 @ map group + inc _num_warps + .endm + + .macro coord_event x, y, byte1, byte2, word1, word2, word3, script + .2byte \x, \y + .byte \byte1, \byte2 + .2byte \word1, \word2, \word3 + .4byte \script + inc _num_traps + .endm + + .macro coord_weather_event x, y, height, weather + coord_event \x, \y, \height, 0, \weather, 0, 0, 0x0 + .endm + + .macro bg_event x, y, byte, kind, word, arg6, arg7, arg8 + .2byte \x, \y + .byte \byte, \kind + .2byte \word + .if \kind < 5 + .4byte \arg6 + .else + .2byte \arg6 + .byte \arg7, \arg8 + .endif + inc _num_signs + .endm + + .macro bg_hidden_item_event x, y, height, item, flag + bg_event \x, \y, \height, 7, 0, \item, ((\flag) - FLAG_HIDDEN_ITEMS_START), 0 + .endm + + .macro bg_secret_base_event x, y, height, secret_base_id + bg_event \x, \y, \height, 8, 0, \secret_base_id, 0, 0 + .endm + + .macro map_events npcs, warps, traps, signs + .byte _num_npcs, _num_warps, _num_traps, _num_signs + .4byte \npcs, \warps, \traps, \signs + reset_map_events + .endm + + .macro reset_map_events + .set _num_npcs, 0 + .set _num_warps, 0 + .set _num_traps, 0 + .set _num_signs, 0 + .endm + + reset_map_events + + + .equiv connection_down, 1 + .equiv connection_up, 2 + .equiv connection_left, 3 + .equiv connection_right, 4 + .equiv connection_dive, 5 + .equiv connection_emerge, 6 + + .macro connection direction, offset, map, filler + .4byte connection_\direction + .4byte \offset + map \map + .space 2 + .endm diff --git a/include/macros/movement.inc b/include/macros/movement.inc new file mode 100644 index 000000000..674ce7169 --- /dev/null +++ b/include/macros/movement.inc @@ -0,0 +1,116 @@ + .macro create_movement name + enum _\name + .macro \name + .byte _\name + .endm + .endm + + enum_start + create_movement step_00 + create_movement step_01 + create_movement step_02 + create_movement step_03 + create_movement slow_step_down + create_movement slow_step_up + create_movement slow_step_left + create_movement slow_step_right + create_movement step_down + create_movement step_up + create_movement step_left + create_movement step_right + create_movement fast_step_down + create_movement fast_step_up + create_movement fast_step_left + create_movement fast_step_right + create_movement step_10 + create_movement step_11 + create_movement step_12 + create_movement step_13 + create_movement step_14 + create_movement step_15 + create_movement step_16 + create_movement step_17 + create_movement step_18 + create_movement step_19 + create_movement step_1a + create_movement step_1b + create_movement step_1c + create_movement step_1d + create_movement step_1e + create_movement step_1f + create_movement step_20 + create_movement step_21 + create_movement step_22 + create_movement step_23 + create_movement step_24 + create_movement step_25 + create_movement step_26 + create_movement step_27 + create_movement step_28 + create_movement step_29 + create_movement step_2a + create_movement step_2b + create_movement step_2c + create_movement step_2d + create_movement step_2e + create_movement step_2f + create_movement step_30 + create_movement step_31 + create_movement step_32 + create_movement step_33 + create_movement step_34 + create_movement step_35 + create_movement step_36 + create_movement step_37 + create_movement step_38 + create_movement step_39 + create_movement step_3a + create_movement step_3b + create_movement step_3c + create_movement step_3d + create_movement step_3e + create_movement step_3f + create_movement step_40 + create_movement step_41 + create_movement step_42 + create_movement step_43 + create_movement step_44 + create_movement step_45 + create_movement step_46 + create_movement step_47 + create_movement step_48 + create_movement step_49 + create_movement step_4a + create_movement step_4b + create_movement step_4c + create_movement step_4d + create_movement step_4e + create_movement step_4f + create_movement step_50 + create_movement step_51 + create_movement step_52 + create_movement step_53 + create_movement step_54 + create_movement step_55 + create_movement step_56 + create_movement step_57 + create_movement step_58 + create_movement step_59 + create_movement step_5a + create_movement step_5b + create_movement step_5c + create_movement step_5d + create_movement step_5e + create_movement step_5f + create_movement step_60 + create_movement step_61 + + enum_start 0x91 + create_movement step_91 + create_movement step_92 + + enum_start 0x96 + create_movement step_96 + + enum_start 0xfe + create_movement step_end diff --git a/include/macros/music_voice.inc b/include/macros/music_voice.inc new file mode 100644 index 000000000..b7a9e7f8d --- /dev/null +++ b/include/macros/music_voice.inc @@ -0,0 +1,125 @@ + .macro voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release + .byte 0 + _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release + .endm + + .macro voice_directsound_no_resample base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release + .byte 8 + _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release + .endm + + .macro voice_directsound_alt base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release + .byte 16 + _voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release + .endm + + .macro _voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release + .byte \base_midi_key + .byte 0 + .if \pan != 0 + .byte (0x80 | \pan) + .else + .byte 0 + .endif + .4byte \sample_data_pointer + .byte \attack + .byte \decay + .byte \sustain + .byte \release + .endm + + .macro voice_square_1 sweep, duty_cycle, attack, decay, sustain, release + _voice_square_1 1, \sweep, \duty_cycle, \attack, \decay, \sustain, \release + .endm + + .macro voice_square_1_alt sweep, duty_cycle, attack, decay, sustain, release + _voice_square_1 9, \sweep, \duty_cycle, \attack, \decay, \sustain, \release + .endm + + .macro _voice_square_1 type, sweep, duty_cycle, attack, decay, sustain, release + .byte \type, 60, 0 + .byte \sweep + .byte (\duty_cycle & 0x3) + .byte 0, 0, 0 + .byte (\attack & 0x7) + .byte (\decay & 0x7) + .byte (\sustain & 0xF) + .byte (\release & 0x7) + .endm + + .macro voice_square_2 duty_cycle, attack, decay, sustain, release + _voice_square_2 2, \duty_cycle, \attack, \decay, \sustain, \release + .endm + + .macro voice_square_2_alt duty_cycle, attack, decay, sustain, release + _voice_square_2 10, \duty_cycle, \attack, \decay, \sustain, \release + .endm + + .macro _voice_square_2 type, duty_cycle, attack, decay, sustain, release + .byte \type, 60, 0, 0 + .byte (\duty_cycle & 0x3) + .byte 0, 0, 0 + .byte (\attack & 0x7) + .byte (\decay & 0x7) + .byte (\sustain & 0xF) + .byte (\release & 0x7) + .endm + + .macro voice_programmable_wave wave_samples_pointer, attack, decay, sustain, release + _voice_programmable_wave 3, \wave_samples_pointer, \attack, \decay, \sustain, \release + .endm + + .macro voice_programmable_wave_alt wave_samples_pointer, attack, decay, sustain, release + _voice_programmable_wave 11, \wave_samples_pointer, \attack, \decay, \sustain, \release + .endm + + .macro _voice_programmable_wave type, wave_samples_pointer, attack, decay, sustain, release + .byte \type, 60, 0, 0 + .4byte \wave_samples_pointer + .byte (\attack & 0x7) + .byte (\decay & 0x7) + .byte (\sustain & 0xF) + .byte (\release & 0x7) + .endm + + .macro voice_noise period, attack, decay, sustain, release + _voice_noise 4, \period, \attack, \decay, \sustain, \release + .endm + + .macro voice_noise_alt period, attack, decay, sustain, release + _voice_noise 12, \period, \attack, \decay, \sustain, \release + .endm + + .macro _voice_noise type, period, attack, decay, sustain, release + .byte \type, 60, 0, 0 + .byte (\period & 0x1) + .byte 0, 0, 0 + .byte (\attack & 0x7) + .byte (\decay & 0x7) + .byte (\sustain & 0xF) + .byte (\release & 0x7) + .endm + + .macro voice_keysplit voice_group_pointer, keysplit_table_pointer + .byte 0x40, 0, 0, 0 + .4byte \voice_group_pointer + .4byte \keysplit_table_pointer + .endm + + .macro voice_keysplit_all voice_group_pointer + .byte 0x80, 0, 0, 0 + .4byte \voice_group_pointer + .4byte 0 + .endm + + .macro cry sample + .byte 0x20, 60, 0, 0 + .4byte \sample + .byte 0xff, 0, 0xff, 0 + .endm + + .macro cry2 sample + .byte 0x30, 60, 0, 0 + .4byte \sample + .byte 0xff, 0, 0xff, 0 + .endm diff --git a/include/macros/pokemon_data.inc b/include/macros/pokemon_data.inc new file mode 100644 index 000000000..b0a5f22e3 --- /dev/null +++ b/include/macros/pokemon_data.inc @@ -0,0 +1,57 @@ + .macro pokedex_entry pokemon_name, height, weight, pokemon_scale, pokemon_offset, trainer_scale, trainer_offset + .2byte \height @ in decimeters + .2byte \weight @ in hectograms + .4byte DexDescription_\pokemon_name\()_1 + .4byte DexDescription_\pokemon_name\()_2 + .2byte 0 @ unused + .2byte \pokemon_scale + .2byte \pokemon_offset + .2byte \trainer_scale + .2byte \trainer_offset + .2byte 0 @ padding + .endm + + .macro base_stats hp, attack, defense, speed, sp_attack, sp_defense + .byte \hp + .byte \attack + .byte \defense + .byte \speed + .byte \sp_attack + .byte \sp_defense + .endm + + .macro ev_yield hp, attack, defense, speed, sp_attack, sp_defense + .2byte (\sp_defense << 10) | (\sp_attack << 8) | (\speed << 6) | (\defense << 4) | (\attack << 2) | \hp + .endm + + .macro level_up_move level, move + .2byte (\level << 9) | \move + .endm + + .macro evo_entry method, parameter, target_species + .2byte \method + .2byte \parameter + .2byte \target_species + .2byte 0 @ padding + .endm + + .macro empty_evo_entries count + .fill 8 * \count, 1, 0 + .endm + + .macro egg_moves_begin species + .2byte 20000 + \species + .endm + +@ If the min level equals the max level, only one level argument is needed. + .macro wild_mon species, min_level, max_level + .byte \min_level + + .ifb \max_level + .byte \min_level + .else + .byte \max_level + .endif + + .2byte SPECIES_\species + .endm diff --git a/ld_script.txt b/ld_script.txt index 9b385d3b8..373924638 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -36,7 +36,7 @@ SECTIONS { .text : ALIGN(4) { - asm/crt0.o(.text); + src/crt0.o(.text); src/engine/main.o(.text); src/engine/sprite.o(.text); src/engine/text.o(.text); @@ -406,8 +406,8 @@ SECTIONS { lib_text : ALIGN(4) { - asm/libgcnmultiboot.o(.text); - asm/m4a_1.o(.text); + src/libs/libgcnmultiboot.o(.text); + src/libs/m4a_1.o(.text); src/libs/m4a_2.o(.text); asm/m4a_3.o(.text); src/libs/m4a_4.o(.text); @@ -415,7 +415,7 @@ SECTIONS { src/libs/agb_flash_1m.o(.text); src/libs/agb_flash_mx.o(.text); src/libs/siirtc.o(.text); - asm/libagbsyscall.o(.text); + src/libs/libagbsyscall.o(.text); tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text); tools/agbcc/lib/libgcc.a:_divsi3.o(.text); tools/agbcc/lib/libgcc.a:_dvmd_tls.o(.text); diff --git a/misc.mk b/misc.mk index 1d6cb09b0..40234c81b 100644 --- a/misc.mk +++ b/misc.mk @@ -1,143 +1,149 @@ -MENUGFXDIR := graphics/interface -TRADEGFXDIR := graphics/trade -INTROGFXDIR := graphics/intro -PSSGFXDIR := graphics/pokemon_storage -MISCGFXDIR := graphics/misc -PKNAVGFXDIR := graphics/pokenav -UNKNOWNGFXDIR := graphics/unknown -UNUSEDGFXDIR := graphics/unused -REELGFXDIR := graphics/slot_machine -ROULGFXDIR := graphics/roulette -BTLANMSPRGFXDIR := graphics/battle_anims/sprites -PICFRAMEGFXDIR := graphics/picture_frame -CONTESTGFXDIR := graphics/contest -MASKSGFXDIR := graphics/battle_anims/masks -BATTRANSGFXDIR := graphics/battle_transitions -TYPESGFXDIR := graphics/types -TITLEGFXDIR := graphics/title_screen +#### Pokemon Storage System #### -types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark -contest_types := cool beauty cute smart tough - -$(MENUGFXDIR)/menu.gbapal: $(MENUGFXDIR)/menu_0.gbapal $(MENUGFXDIR)/menu_1.gbapal - @cat $(MENUGFXDIR)/menu_0.gbapal $(MENUGFXDIR)/menu_1.gbapal >$@ - -$(INTROGFXDIR)/intro.4bpp: $(INTROGFXDIR)/intro1_waterdrops.4bpp $(INTROGFXDIR)/intro1_gamefreak.4bpp - @cat $(INTROGFXDIR)/intro1_waterdrops.4bpp $(INTROGFXDIR)/intro1_gamefreak.4bpp >$@ - -$(INTROGFXDIR)/introgfx.4bpp: $(INTROGFXDIR)/intro1_bg.4bpp $(INTROGFXDIR)/intro1_leaves.4bpp - @cat $(INTROGFXDIR)/intro1_bg.4bpp $(INTROGFXDIR)/intro1_leaves.4bpp >$@ +PSSGFXDIR := graphics/pokemon_storage -$(PKNAVGFXDIR)/region_map.8bpp: $(PKNAVGFXDIR)/region_map.png - $(GFX) $< $@ -num_tiles 233 +$(PSSGFXDIR)/header.4bpp: GFX_OPTS := -num_tiles 47 -$(PSSGFXDIR)/forest_frame.4bpp: $(PSSGFXDIR)/forest_frame.png - $(GFX) $< $@ -num_tiles 49 +$(PSSGFXDIR)/misc1.4bpp: GFX_OPTS := -num_tiles 91 +$(PSSGFXDIR)/forest_frame.4bpp: GFX_OPTS := -num_tiles 49 $(PSSGFXDIR)/forest.4bpp: $(PSSGFXDIR)/forest_frame.4bpp $(PSSGFXDIR)/forest_bg.4bpp @cat $(PSSGFXDIR)/forest_frame.4bpp $(PSSGFXDIR)/forest_bg.4bpp >$@ -$(PSSGFXDIR)/city_frame.4bpp: $(PSSGFXDIR)/city_frame.png - $(GFX) $< $@ -num_tiles 37 - +$(PSSGFXDIR)/city_frame.4bpp: GFX_OPTS := -num_tiles 37 $(PSSGFXDIR)/city.4bpp: $(PSSGFXDIR)/city_frame.4bpp $(PSSGFXDIR)/city_bg.4bpp @cat $(PSSGFXDIR)/city_frame.4bpp $(PSSGFXDIR)/city_bg.4bpp >$@ -$(PSSGFXDIR)/desert_frame.4bpp: $(PSSGFXDIR)/desert_frame.png - $(GFX) $< $@ -num_tiles 48 - +$(PSSGFXDIR)/desert_frame.4bpp: GFX_OPTS := -num_tiles 48 $(PSSGFXDIR)/desert.4bpp: $(PSSGFXDIR)/desert_frame.4bpp $(PSSGFXDIR)/desert_bg.4bpp @cat $(PSSGFXDIR)/desert_frame.4bpp $(PSSGFXDIR)/desert_bg.4bpp >$@ -$(PSSGFXDIR)/savanna_frame.4bpp: $(PSSGFXDIR)/savanna_frame.png - $(GFX) $< $@ -num_tiles 40 - +$(PSSGFXDIR)/savanna_frame.4bpp: GFX_OPTS := -num_tiles 40 $(PSSGFXDIR)/savanna.4bpp: $(PSSGFXDIR)/savanna_frame.4bpp $(PSSGFXDIR)/savanna_bg.4bpp @cat $(PSSGFXDIR)/savanna_frame.4bpp $(PSSGFXDIR)/savanna_bg.4bpp >$@ -$(PSSGFXDIR)/crag_frame.4bpp: $(PSSGFXDIR)/crag_frame.png - $(GFX) $< $@ -num_tiles 46 - +$(PSSGFXDIR)/crag_frame.4bpp: GFX_OPTS := -num_tiles 46 $(PSSGFXDIR)/crag.4bpp: $(PSSGFXDIR)/crag_frame.4bpp $(PSSGFXDIR)/crag_bg.4bpp @cat $(PSSGFXDIR)/crag_frame.4bpp $(PSSGFXDIR)/crag_bg.4bpp >$@ -$(PSSGFXDIR)/volcano_frame.4bpp: $(PSSGFXDIR)/volcano_frame.png - $(GFX) $< $@ -num_tiles 49 - +$(PSSGFXDIR)/volcano_frame.4bpp: GFX_OPTS := -num_tiles 49 $(PSSGFXDIR)/volcano.4bpp: $(PSSGFXDIR)/volcano_frame.4bpp $(PSSGFXDIR)/volcano_bg.4bpp @cat $(PSSGFXDIR)/volcano_frame.4bpp $(PSSGFXDIR)/volcano_bg.4bpp >$@ -$(PSSGFXDIR)/snow_frame.4bpp: $(PSSGFXDIR)/snow_frame.png - $(GFX) $< $@ -num_tiles 46 - +$(PSSGFXDIR)/snow_frame.4bpp: GFX_OPTS := -num_tiles 46 $(PSSGFXDIR)/snow.4bpp: $(PSSGFXDIR)/snow_frame.4bpp $(PSSGFXDIR)/snow_bg.4bpp @cat $(PSSGFXDIR)/snow_frame.4bpp $(PSSGFXDIR)/snow_bg.4bpp >$@ -$(PSSGFXDIR)/cave_frame.4bpp: $(PSSGFXDIR)/cave_frame.png - $(GFX) $< $@ -num_tiles 57 - +$(PSSGFXDIR)/cave_frame.4bpp: GFX_OPTS := -num_tiles 57 $(PSSGFXDIR)/cave.4bpp: $(PSSGFXDIR)/cave_frame.4bpp $(PSSGFXDIR)/cave_bg.4bpp @cat $(PSSGFXDIR)/cave_frame.4bpp $(PSSGFXDIR)/cave_bg.4bpp >$@ -$(PSSGFXDIR)/beach_frame.4bpp: $(PSSGFXDIR)/beach_frame.png - $(GFX) $< $@ -num_tiles 48 - +$(PSSGFXDIR)/beach_frame.4bpp: GFX_OPTS := -num_tiles 48 $(PSSGFXDIR)/beach.4bpp: $(PSSGFXDIR)/beach_frame.4bpp $(PSSGFXDIR)/beach_bg.4bpp @cat $(PSSGFXDIR)/beach_frame.4bpp $(PSSGFXDIR)/beach_bg.4bpp >$@ -$(PSSGFXDIR)/seafloor_frame.4bpp: $(PSSGFXDIR)/seafloor_frame.png - $(GFX) $< $@ -num_tiles 45 - +$(PSSGFXDIR)/seafloor_frame.4bpp: GFX_OPTS := -num_tiles 45 $(PSSGFXDIR)/seafloor.4bpp: $(PSSGFXDIR)/seafloor_frame.4bpp $(PSSGFXDIR)/seafloor_bg.4bpp @cat $(PSSGFXDIR)/seafloor_frame.4bpp $(PSSGFXDIR)/seafloor_bg.4bpp >$@ -$(PSSGFXDIR)/river_frame.4bpp: $(PSSGFXDIR)/river_frame.png - $(GFX) $< $@ -num_tiles 57 - +$(PSSGFXDIR)/river_frame.4bpp: GFX_OPTS := -num_tiles 57 $(PSSGFXDIR)/river.4bpp: $(PSSGFXDIR)/river_frame.4bpp $(PSSGFXDIR)/river_bg.4bpp @cat $(PSSGFXDIR)/river_frame.4bpp $(PSSGFXDIR)/river_bg.4bpp >$@ -$(PSSGFXDIR)/sky_frame.4bpp: $(PSSGFXDIR)/sky_frame.png - $(GFX) $< $@ -num_tiles 45 - +$(PSSGFXDIR)/sky_frame.4bpp: GFX_OPTS := -num_tiles 45 $(PSSGFXDIR)/sky.4bpp: $(PSSGFXDIR)/sky_frame.4bpp $(PSSGFXDIR)/sky_bg.4bpp @cat $(PSSGFXDIR)/sky_frame.4bpp $(PSSGFXDIR)/sky_bg.4bpp >$@ -$(PSSGFXDIR)/polkadot_frame.4bpp: $(PSSGFXDIR)/polkadot_frame.png - $(GFX) $< $@ -num_tiles 34 - +$(PSSGFXDIR)/polkadot_frame.4bpp: GFX_OPTS := -num_tiles 34 $(PSSGFXDIR)/polkadot.4bpp: $(PSSGFXDIR)/polkadot_frame.4bpp $(PSSGFXDIR)/polkadot_bg.4bpp @cat $(PSSGFXDIR)/polkadot_frame.4bpp $(PSSGFXDIR)/polkadot_bg.4bpp >$@ -$(PSSGFXDIR)/pokecenter_bg.4bpp: $(PSSGFXDIR)/pokecenter_bg.png - $(GFX) $< $@ -num_tiles 38 - +$(PSSGFXDIR)/pokecenter_bg.4bpp: GFX_OPTS := -num_tiles 38 $(PSSGFXDIR)/pokecenter.4bpp: $(PSSGFXDIR)/pokecenter_frame.4bpp $(PSSGFXDIR)/pokecenter_bg.4bpp @cat $(PSSGFXDIR)/pokecenter_frame.4bpp $(PSSGFXDIR)/pokecenter_bg.4bpp >$@ -$(PSSGFXDIR)/machine_frame.4bpp: $(PSSGFXDIR)/machine_frame.png - $(GFX) $< $@ -num_tiles 46 - +$(PSSGFXDIR)/machine_frame.4bpp: GFX_OPTS := -num_tiles 46 $(PSSGFXDIR)/machine.4bpp: $(PSSGFXDIR)/machine_frame.4bpp $(PSSGFXDIR)/machine_bg.4bpp @cat $(PSSGFXDIR)/machine_frame.4bpp $(PSSGFXDIR)/machine_bg.4bpp >$@ -$(PSSGFXDIR)/plain_frame.4bpp: $(PSSGFXDIR)/plain_frame.png - $(GFX) $< $@ -num_tiles 18 - +$(PSSGFXDIR)/plain_frame.4bpp: GFX_OPTS := -num_tiles 18 $(PSSGFXDIR)/plain.4bpp: $(PSSGFXDIR)/plain_frame.4bpp $(PSSGFXDIR)/plain_bg.4bpp @cat $(PSSGFXDIR)/plain_frame.4bpp $(PSSGFXDIR)/plain_bg.4bpp >$@ -$(PKNAVGFXDIR)/outline.4bpp: $(PKNAVGFXDIR)/outline.png - $(GFX) $< $@ -num_tiles 43 -$(REELGFXDIR)/reel_time.4bpp: $(REELGFXDIR)/reel_pikachu.4bpp $(REELGFXDIR)/reel_machine.4bpp - @cat $(REELGFXDIR)/reel_pikachu.4bpp $(REELGFXDIR)/reel_machine.4bpp >$@ +#### Intro #### -$(MISCGFXDIR)/birch_help.4bpp: $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp - @cat $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp >$@ +INTROGFXDIR := graphics/intro -$(MISCGFXDIR)/clock_misc.4bpp: $(MISCGFXDIR)/clock_hands.4bpp $(MISCGFXDIR)/clock_ampm.4bpp - @cat $(MISCGFXDIR)/clock_hands.4bpp $(MISCGFXDIR)/clock_ampm.4bpp >$@ +$(INTROGFXDIR)/intro.4bpp: $(INTROGFXDIR)/intro1_waterdrops.4bpp $(INTROGFXDIR)/intro1_gamefreak.4bpp + @cat $(INTROGFXDIR)/intro1_waterdrops.4bpp $(INTROGFXDIR)/intro1_gamefreak.4bpp >$@ + +$(INTROGFXDIR)/introgfx.4bpp: $(INTROGFXDIR)/intro1_bg.4bpp $(INTROGFXDIR)/intro1_leaves.4bpp + @cat $(INTROGFXDIR)/intro1_bg.4bpp $(INTROGFXDIR)/intro1_leaves.4bpp >$@ + +$(INTROGFXDIR)/intro3_misc.4bpp: $(INTROGFXDIR)/intro3_star.4bpp $(INTROGFXDIR)/intro3_attackgfx.4bpp $(INTROGFXDIR)/intro3_explosion.4bpp + @cat $(INTROGFXDIR)/intro3_star.4bpp $(INTROGFXDIR)/intro3_attackgfx.4bpp $(INTROGFXDIR)/intro3_explosion.4bpp >$@ + +$(INTROGFXDIR)/copyright.4bpp: GFX_OPTS := -num_tiles 43 + + +#### Title Screen #### + +TITLEGFXDIR := graphics/title_screen + +$(TITLEGFXDIR)/press_start.4bpp: GFX_OPTS := -num_tiles 41 + + +#### Interface #### + +MENUGFXDIR := graphics/interface + +$(MENUGFXDIR)/menu.gbapal: $(MENUGFXDIR)/menu_0.gbapal $(MENUGFXDIR)/menu_1.gbapal + @cat $(MENUGFXDIR)/menu_0.gbapal $(MENUGFXDIR)/menu_1.gbapal >$@ + +$(MENUGFXDIR)/wordgroup_frame.4bpp: GFX_OPTS := -num_tiles 65 + +$(MENUGFXDIR)/party_menu_misc.4bpp: GFX_OPTS := -num_tiles 116 + +$(MENUGFXDIR)/status_screen.4bpp: GFX_OPTS := -num_tiles 217 + +$(MENUGFXDIR)/hp_numbers.4bpp: $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp + @cat $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp >$@ + + +#### PokeNav #### + +PKNAVGFXDIR := graphics/pokenav + +$(PKNAVGFXDIR)/region_map.8bpp: GFX_OPTS := -num_tiles 233 + +$(PKNAVGFXDIR)/outline.4bpp: GFX_OPTS := -num_tiles 43 + +$(PKNAVGFXDIR)/menu_options.4bpp: $(PKNAVGFXDIR)/menu_hoennmap.4bpp $(PKNAVGFXDIR)/menu_condition.4bpp $(PKNAVGFXDIR)/menu_eyes.4bpp $(PKNAVGFXDIR)/menu_ribbons.4bpp $(PKNAVGFXDIR)/menu_off.4bpp + @cat $(PKNAVGFXDIR)/menu_hoennmap.4bpp $(PKNAVGFXDIR)/menu_condition.4bpp $(PKNAVGFXDIR)/menu_eyes.4bpp $(PKNAVGFXDIR)/menu_ribbons.4bpp $(PKNAVGFXDIR)/menu_off.4bpp >$@ + +$(PKNAVGFXDIR)/condition_menu_misc.4bpp: GFX_OPTS := -num_tiles 41 + +$(PKNAVGFXDIR)/condition_search.4bpp: $(PKNAVGFXDIR)/condition_search_cool.4bpp $(PKNAVGFXDIR)/condition_search_beauty.4bpp $(PKNAVGFXDIR)/condition_search_cute.4bpp $(PKNAVGFXDIR)/condition_search_smart.4bpp $(PKNAVGFXDIR)/condition_search_tough.4bpp $(PKNAVGFXDIR)/condition_search_cancel.4bpp + @cat $(PKNAVGFXDIR)/condition_search_cool.4bpp $(PKNAVGFXDIR)/condition_search_beauty.4bpp $(PKNAVGFXDIR)/condition_search_cute.4bpp $(PKNAVGFXDIR)/condition_search_smart.4bpp $(PKNAVGFXDIR)/condition_search_tough.4bpp $(PKNAVGFXDIR)/condition_search_cancel.4bpp >$@ + + +#### Trade #### + +TRADEGFXDIR := graphics/trade + +$(TRADEGFXDIR)/gba_affine.8bpp: GFX_OPTS := -num_tiles 129 + +$(TRADEGFXDIR)/menu.4bpp: GFX_OPTS := -num_tiles 148 + + +#### Casino #### + +REELGFXDIR := graphics/slot_machine +ROULGFXDIR := graphics/roulette + +$(REELGFXDIR)/reel_time.4bpp: $(REELGFXDIR)/reel_pikachu.4bpp $(REELGFXDIR)/reel_machine.4bpp + @cat $(REELGFXDIR)/reel_pikachu.4bpp $(REELGFXDIR)/reel_machine.4bpp >$@ $(ROULGFXDIR)/roulette_tilt.4bpp: $(ROULGFXDIR)/shroomish.4bpp $(ROULGFXDIR)/tailow.4bpp @cat $(ROULGFXDIR)/shroomish.4bpp $(ROULGFXDIR)/tailow.4bpp >$@ @@ -145,14 +151,11 @@ $(ROULGFXDIR)/roulette_tilt.4bpp: $(ROULGFXDIR)/shroomish.4bpp $(ROULGFXDIR)/tai $(ROULGFXDIR)/poke_icons2.4bpp: $(ROULGFXDIR)/wynaut.4bpp $(ROULGFXDIR)/azurill.4bpp $(ROULGFXDIR)/skitty.4bpp $(ROULGFXDIR)/makuhita.4bpp @cat $(ROULGFXDIR)/wynaut.4bpp $(ROULGFXDIR)/azurill.4bpp $(ROULGFXDIR)/skitty.4bpp $(ROULGFXDIR)/makuhita.4bpp >$@ -$(INTROGFXDIR)/intro3_misc.4bpp: $(INTROGFXDIR)/intro3_star.4bpp $(INTROGFXDIR)/intro3_attackgfx.4bpp $(INTROGFXDIR)/intro3_explosion.4bpp - @cat $(INTROGFXDIR)/intro3_star.4bpp $(INTROGFXDIR)/intro3_attackgfx.4bpp $(INTROGFXDIR)/intro3_explosion.4bpp >$@ -$(TRADEGFXDIR)/gba_affine.8bpp: $(TRADEGFXDIR)/gba_affine.png - $(GFX) $< $@ -num_tiles 129 +#### Battle Animations #### -$(TRADEGFXDIR)/menu.4bpp: $(TRADEGFXDIR)/menu.png - $(GFX) $< $@ -num_tiles 148 +BTLANMSPRGFXDIR := graphics/battle_anims/sprites +MASKSGFXDIR := graphics/battle_anims/masks $(BTLANMSPRGFXDIR)/001.4bpp: $(BTLANMSPRGFXDIR)/001_0.4bpp $(BTLANMSPRGFXDIR)/001_1.4bpp @cat $(BTLANMSPRGFXDIR)/001_0.4bpp $(BTLANMSPRGFXDIR)/001_1.4bpp >$@ @@ -169,47 +172,36 @@ $(BTLANMSPRGFXDIR)/141.4bpp: $(BTLANMSPRGFXDIR)/141_0.4bpp $(BTLANMSPRGFXDIR)/14 $(BTLANMSPRGFXDIR)/159.4bpp: $(BTLANMSPRGFXDIR)/159_0.4bpp $(BTLANMSPRGFXDIR)/159_1.4bpp @cat $(BTLANMSPRGFXDIR)/159_0.4bpp $(BTLANMSPRGFXDIR)/159_1.4bpp >$@ -$(PICFRAMEGFXDIR)/frame5.4bpp: $(PICFRAMEGFXDIR)/frame5.png - $(GFX) $< $@ -num_tiles 86 +$(MASKSGFXDIR)/unknown_D2EDFC.4bpp: GFX_OPTS := -num_tiles 14 -$(CONTESTGFXDIR)/nextturn.4bpp: $(CONTESTGFXDIR)/nextturn.png - $(GFX) $< $@ -num_tiles 8 -$(UNUSEDGFXDIR)/obi_palpak1.gbapal: $(UNUSEDGFXDIR)/old_pal1.gbapal $(UNUSEDGFXDIR)/old_pal2.gbapal $(UNUSEDGFXDIR)/old_pal3.gbapal - @cat $(UNUSEDGFXDIR)/old_pal1.gbapal $(UNUSEDGFXDIR)/old_pal2.gbapal $(UNUSEDGFXDIR)/old_pal3.gbapal >$@ +#### Battle Transition -$(UNUSEDGFXDIR)/obi_palpak3.gbapal: $(UNUSEDGFXDIR)/old_pal5.gbapal $(UNUSEDGFXDIR)/old_pal6.gbapal $(UNUSEDGFXDIR)/old_pal7.gbapal - @cat $(UNUSEDGFXDIR)/old_pal5.gbapal $(UNUSEDGFXDIR)/old_pal6.gbapal $(UNUSEDGFXDIR)/old_pal7.gbapal >$@ +BATTRANSGFXDIR := graphics/battle_transitions -$(UNUSEDGFXDIR)/obi1.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur.4bpp $(UNUSEDGFXDIR)/old_charizard.4bpp - @cat $(UNUSEDGFXDIR)/old_bulbasaur.4bpp $(UNUSEDGFXDIR)/old_charizard.4bpp >$@ +$(BATTRANSGFXDIR)/vs_frame.4bpp: GFX_OPTS := -num_tiles 16 -$(UNUSEDGFXDIR)/obi2.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp - @cat $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp >$@ -$(MENUGFXDIR)/hp_numbers.4bpp: $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp - @cat $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp >$@ +#### Contest #### -$(UNUSEDGFXDIR)/redyellowgreen_frame.bin: $(UNUSEDGFXDIR)/red_frame.bin $(UNUSEDGFXDIR)/yellow_frame.bin $(UNUSEDGFXDIR)/green_frame.bin $(UNUSEDGFXDIR)/blank_frame.bin - @cat $(UNUSEDGFXDIR)/red_frame.bin $(UNUSEDGFXDIR)/yellow_frame.bin $(UNUSEDGFXDIR)/green_frame.bin $(UNUSEDGFXDIR)/blank_frame.bin >$@ +CONTESTGFXDIR := graphics/contest -$(UNUSEDGFXDIR)/color_frames.4bpp: $(UNUSEDGFXDIR)/color_frames.png - $(GFX) $< $@ -num_tiles 353 +$(CONTESTGFXDIR)/nextturn.4bpp: GFX_OPTS := -num_tiles 8 -$(UNUSEDGFXDIR)/old_contest.4bpp: $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp $(UNUSEDGFXDIR)/old_contest_floor.4bpp $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp $(UNUSEDGFXDIR)/old_contest_symbols.4bpp $(UNUSEDGFXDIR)/old_contest_meter.4bpp $(UNUSEDGFXDIR)/old_contest_classes.4bpp $(UNUSEDGFXDIR)/old_contest_numbers.4bpp - @cat $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp $(UNUSEDGFXDIR)/old_contest_floor.4bpp $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp $(UNUSEDGFXDIR)/old_contest_symbols.4bpp $(UNUSEDGFXDIR)/old_contest_meter.4bpp $(UNUSEDGFXDIR)/old_contest_classes.4bpp $(UNUSEDGFXDIR)/old_contest_numbers.4bpp >$@ -$(UNUSEDGFXDIR)/old_contest_2.4bpp: $(UNUSEDGFXDIR)/old_contest_2_1.4bpp $(UNUSEDGFXDIR)/old_contest_2_2.4bpp - @cat $(UNUSEDGFXDIR)/old_contest_2_1.4bpp $(UNUSEDGFXDIR)/old_contest_2_2.4bpp >$@ +#### Picture Frame #### -$(MASKSGFXDIR)/unknown_D2EDFC.4bpp: $(MASKSGFXDIR)/unknown_D2EDFC.png - $(GFX) $< $@ -num_tiles 14 +PICFRAMEGFXDIR := graphics/picture_frame + +$(PICFRAMEGFXDIR)/frame5.4bpp: GFX_OPTS := -num_tiles 86 -$(BATTRANSGFXDIR)/vs_frame.4bpp: $(BATTRANSGFXDIR)/vs_frame.png - $(GFX) $< $@ -num_tiles 16 -$(MENUGFXDIR)/party_menu_misc.4bpp: $(MENUGFXDIR)/party_menu_misc.png - $(GFX) $< $@ -num_tiles 116 +#### Move Types #### + +TYPESGFXDIR := graphics/types + +types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark +contest_types := cool beauty cute smart tough $(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types:%=$(TYPESGFXDIR)/contest_%.4bpp) @cat $^ >$@ @@ -217,35 +209,45 @@ $(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types $(TYPESGFXDIR)/move_types.gbapal: $(TYPESGFXDIR)/move_types_1.gbapal $(TYPESGFXDIR)/move_types_2.gbapal $(TYPESGFXDIR)/move_types_3.gbapal @cat $(TYPESGFXDIR)/move_types_1.gbapal $(TYPESGFXDIR)/move_types_2.gbapal $(TYPESGFXDIR)/move_types_3.gbapal >$@ -$(MENUGFXDIR)/status_screen.4bpp: $(MENUGFXDIR)/status_screen.png - $(GFX) $< $@ -num_tiles 217 -$(PKNAVGFXDIR)/menu_options.4bpp: $(PKNAVGFXDIR)/menu_hoennmap.4bpp $(PKNAVGFXDIR)/menu_condition.4bpp $(PKNAVGFXDIR)/menu_eyes.4bpp $(PKNAVGFXDIR)/menu_ribbons.4bpp $(PKNAVGFXDIR)/menu_off.4bpp - @cat $(PKNAVGFXDIR)/menu_hoennmap.4bpp $(PKNAVGFXDIR)/menu_condition.4bpp $(PKNAVGFXDIR)/menu_eyes.4bpp $(PKNAVGFXDIR)/menu_ribbons.4bpp $(PKNAVGFXDIR)/menu_off.4bpp >$@ +#### Miscellaneous #### -$(PKNAVGFXDIR)/condition_menu_misc.4bpp: $(PKNAVGFXDIR)/condition_menu_misc.png - $(GFX) $< $@ -num_tiles 41 +MISCGFXDIR := graphics/misc -$(PKNAVGFXDIR)/condition_search.4bpp: $(PKNAVGFXDIR)/condition_search_cool.4bpp $(PKNAVGFXDIR)/condition_search_beauty.4bpp $(PKNAVGFXDIR)/condition_search_cute.4bpp $(PKNAVGFXDIR)/condition_search_smart.4bpp $(PKNAVGFXDIR)/condition_search_tough.4bpp $(PKNAVGFXDIR)/condition_search_cancel.4bpp - @cat $(PKNAVGFXDIR)/condition_search_cool.4bpp $(PKNAVGFXDIR)/condition_search_beauty.4bpp $(PKNAVGFXDIR)/condition_search_cute.4bpp $(PKNAVGFXDIR)/condition_search_smart.4bpp $(PKNAVGFXDIR)/condition_search_tough.4bpp $(PKNAVGFXDIR)/condition_search_cancel.4bpp >$@ +$(MISCGFXDIR)/hof.4bpp: GFX_OPTS := -num_tiles 37 -$(PSSGFXDIR)/header.4bpp: $(PSSGFXDIR)/header.png - $(GFX) $< $@ -num_tiles 47 +$(MISCGFXDIR)/end_copyright.4bpp: GFX_OPTS := -num_tiles 90 -$(PSSGFXDIR)/misc1.4bpp: $(PSSGFXDIR)/misc1.png - $(GFX) $< $@ -num_tiles 91 +$(MISCGFXDIR)/birch_help.4bpp: $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp + @cat $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp >$@ -$(MISCGFXDIR)/hof.4bpp: $(MISCGFXDIR)/hof.png - $(GFX) $< $@ -num_tiles 37 +$(MISCGFXDIR)/clock_misc.4bpp: $(MISCGFXDIR)/clock_hands.4bpp $(MISCGFXDIR)/clock_ampm.4bpp + @cat $(MISCGFXDIR)/clock_hands.4bpp $(MISCGFXDIR)/clock_ampm.4bpp >$@ -$(MENUGFXDIR)/wordgroup_frame.4bpp: $(MENUGFXDIR)/wordgroup_frame.png - $(GFX) $< $@ -num_tiles 65 -$(INTROGFXDIR)/copyright.4bpp: $(INTROGFXDIR)/copyright.png - $(GFX) $< $@ -num_tiles 43 +#### Unused #### -$(TITLEGFXDIR)/press_start.4bpp: $(TITLEGFXDIR)/press_start.png - $(GFX) $< $@ -num_tiles 41 +UNUSEDGFXDIR := graphics/unused -$(MISCGFXDIR)/end_copyright.4bpp: $(MISCGFXDIR)/end_copyright.png - $(GFX) $< $@ -num_tiles 90 +$(UNUSEDGFXDIR)/redyellowgreen_frame.bin: $(UNUSEDGFXDIR)/red_frame.bin $(UNUSEDGFXDIR)/yellow_frame.bin $(UNUSEDGFXDIR)/green_frame.bin $(UNUSEDGFXDIR)/blank_frame.bin + @cat $(UNUSEDGFXDIR)/red_frame.bin $(UNUSEDGFXDIR)/yellow_frame.bin $(UNUSEDGFXDIR)/green_frame.bin $(UNUSEDGFXDIR)/blank_frame.bin >$@ + +$(UNUSEDGFXDIR)/color_frames.4bpp: GFX_OPTS := -num_tiles 353 + +$(UNUSEDGFXDIR)/old_contest.4bpp: $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp $(UNUSEDGFXDIR)/old_contest_floor.4bpp $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp $(UNUSEDGFXDIR)/old_contest_symbols.4bpp $(UNUSEDGFXDIR)/old_contest_meter.4bpp $(UNUSEDGFXDIR)/old_contest_classes.4bpp $(UNUSEDGFXDIR)/old_contest_numbers.4bpp + @cat $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp $(UNUSEDGFXDIR)/old_contest_floor.4bpp $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp $(UNUSEDGFXDIR)/old_contest_symbols.4bpp $(UNUSEDGFXDIR)/old_contest_meter.4bpp $(UNUSEDGFXDIR)/old_contest_classes.4bpp $(UNUSEDGFXDIR)/old_contest_numbers.4bpp >$@ + +$(UNUSEDGFXDIR)/old_contest_2.4bpp: $(UNUSEDGFXDIR)/old_contest_2_1.4bpp $(UNUSEDGFXDIR)/old_contest_2_2.4bpp + @cat $(UNUSEDGFXDIR)/old_contest_2_1.4bpp $(UNUSEDGFXDIR)/old_contest_2_2.4bpp >$@ + +$(UNUSEDGFXDIR)/obi_palpak1.gbapal: $(UNUSEDGFXDIR)/old_pal1.gbapal $(UNUSEDGFXDIR)/old_pal2.gbapal $(UNUSEDGFXDIR)/old_pal3.gbapal + @cat $(UNUSEDGFXDIR)/old_pal1.gbapal $(UNUSEDGFXDIR)/old_pal2.gbapal $(UNUSEDGFXDIR)/old_pal3.gbapal >$@ + +$(UNUSEDGFXDIR)/obi_palpak3.gbapal: $(UNUSEDGFXDIR)/old_pal5.gbapal $(UNUSEDGFXDIR)/old_pal6.gbapal $(UNUSEDGFXDIR)/old_pal7.gbapal + @cat $(UNUSEDGFXDIR)/old_pal5.gbapal $(UNUSEDGFXDIR)/old_pal6.gbapal $(UNUSEDGFXDIR)/old_pal7.gbapal >$@ + +$(UNUSEDGFXDIR)/obi1.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur.4bpp $(UNUSEDGFXDIR)/old_charizard.4bpp + @cat $(UNUSEDGFXDIR)/old_bulbasaur.4bpp $(UNUSEDGFXDIR)/old_charizard.4bpp >$@ + +$(UNUSEDGFXDIR)/obi2.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp + @cat $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp >$@ diff --git a/sound/MPlayDef.s b/sound/MPlayDef.s deleted file mode 100644 index f5dd6484d..000000000 --- a/sound/MPlayDef.s +++ /dev/null @@ -1,430 +0,0 @@ - .equ W00, 0x80 @ WAIT - .equ W01, W00+1 @ - .equ W02, W00+2 @ - .equ W03, W00+3 @ - .equ W04, W00+4 @ - .equ W05, W00+5 @ - .equ W06, W00+6 @ - .equ W07, W00+7 @ - .equ W08, W00+8 @ - .equ W09, W00+9 @ - .equ W10, W00+10 @ - .equ W11, W00+11 @ - .equ W12, W00+12 @ - .equ W13, W00+13 @ - .equ W14, W00+14 @ - .equ W15, W00+15 @ - .equ W16, W00+16 @ - .equ W17, W00+17 @ - .equ W18, W00+18 @ - .equ W19, W00+19 @ - .equ W20, W00+20 @ - .equ W21, W00+21 @ - .equ W22, W00+22 @ - .equ W23, W00+23 @ - .equ W24, W00+24 @ - .equ W28, W00+25 @ - .equ W30, W00+26 @ - .equ W32, W00+27 @ - .equ W36, W00+28 @ - .equ W40, W00+29 @ - .equ W42, W00+30 @ - .equ W44, W00+31 @ - .equ W48, W00+32 @ - .equ W52, W00+33 @ - .equ W54, W00+34 @ - .equ W56, W00+35 @ - .equ W60, W00+36 @ - .equ W64, W00+37 @ - .equ W66, W00+38 @ - .equ W68, W00+39 @ - .equ W72, W00+40 @ - .equ W76, W00+41 @ - .equ W78, W00+42 @ - .equ W80, W00+43 @ - .equ W84, W00+44 @ - .equ W88, W00+45 @ - .equ W90, W00+46 @ - .equ W92, W00+47 @ - .equ W96, W00+48 @ - - .equ FINE, 0xb1 @ fine - .equ GOTO, 0xb2 @ goto - .equ PATT, 0xb3 @ pattern play - .equ PEND, 0xb4 @ pattern end - .equ REPT, 0xb5 @ repeat - .equ MEMACC, 0xb9 @ memacc op adr dat ***lib - .equ PRIO, 0xba @ priority - .equ TEMPO, 0xbb @ tempo (BPM/2) - .equ KEYSH, 0xbc @ key shift - .equ VOICE, 0xbd @ voice # - .equ VOL, 0xbe @ volume - .equ PAN, 0xbf @ panpot (c_v+??) - .equ BEND, 0xc0 @ pitch bend (c_v+??) - .equ BENDR, 0xc1 @ bend range - .equ LFOS, 0xc2 @ LFO speed - .equ LFODL, 0xc3 @ LFO delay - .equ MOD, 0xc4 @ modulation depth - .equ MODT, 0xc5 @ modulation type - .equ TUNE, 0xc8 @ micro tuning (c_v+??) - - .equ XCMD, 0xcd @ extend command ***lib - .equ xIECV, 0x08 @ imi.echo vol ***lib - .equ xIECL, 0x09 @ imi.echo len ***lib - - .equ EOT, 0xce @ End of Tie - .equ TIE, 0xcf @ - .equ N01, TIE+1 @ NOTE - .equ N02, N01+1 @ - .equ N03, N01+2 @ - .equ N04, N01+3 @ - .equ N05, N01+4 @ - .equ N06, N01+5 @ - .equ N07, N01+6 @ - .equ N08, N01+7 @ - .equ N09, N01+8 @ - .equ N10, N01+9 @ - .equ N11, N01+10 @ - .equ N12, N01+11 @ - .equ N13, N01+12 @ - .equ N14, N01+13 @ - .equ N15, N01+14 @ - .equ N16, N01+15 @ - .equ N17, N01+16 @ - .equ N18, N01+17 @ - .equ N19, N01+18 @ - .equ N20, N01+19 @ - .equ N21, N01+20 @ - .equ N22, N01+21 @ - .equ N23, N01+22 @ - .equ N24, N01+23 @ - .equ N28, N01+24 @ - .equ N30, N01+25 @ - .equ N32, N01+26 @ - .equ N36, N01+27 @ - .equ N40, N01+28 @ - .equ N42, N01+29 @ - .equ N44, N01+30 @ - .equ N48, N01+31 @ - .equ N52, N01+32 @ - .equ N54, N01+33 @ - .equ N56, N01+34 @ - .equ N60, N01+35 @ - .equ N64, N01+36 @ - .equ N66, N01+37 @ - .equ N68, N01+38 @ - .equ N72, N01+39 @ - .equ N76, N01+40 @ - .equ N78, N01+41 @ - .equ N80, N01+42 @ - .equ N84, N01+43 @ - .equ N88, N01+44 @ - .equ N90, N01+45 @ - .equ N92, N01+46 @ - .equ N96, N01+47 @ - -@ maximum value for volume - - .equ mxv, 0x7F @ - -@ center value of PAN, BEND, TUNE - - .equ c_v, 0x40 @ -64 ~ +63 - -@ note for N??, TIE, EOT - - .equ CnM2, 0 @ - .equ CsM2, 1 @ - .equ DnM2, 2 @ - .equ DsM2, 3 @ - .equ EnM2, 4 @ - .equ FnM2, 5 @ - .equ FsM2, 6 @ - .equ GnM2, 7 @ - .equ GsM2, 8 @ - .equ AnM2, 9 @ - .equ AsM2, 10 @ - .equ BnM2, 11 @ - .equ CnM1, 12 @ - .equ CsM1, 13 @ - .equ DnM1, 14 @ - .equ DsM1, 15 @ - .equ EnM1, 16 @ - .equ FnM1, 17 @ - .equ FsM1, 18 @ - .equ GnM1, 19 @ - .equ GsM1, 20 @ - .equ AnM1, 21 @ - .equ AsM1, 22 @ - .equ BnM1, 23 @ - .equ Cn0, 24 @ - .equ Cs0, 25 @ - .equ Dn0, 26 @ - .equ Ds0, 27 @ - .equ En0, 28 @ - .equ Fn0, 29 @ - .equ Fs0, 30 @ - .equ Gn0, 31 @ - .equ Gs0, 32 @ - .equ An0, 33 @ - .equ As0, 34 @ - .equ Bn0, 35 @ - .equ Cn1, 36 @ - .equ Cs1, 37 @ - .equ Dn1, 38 @ - .equ Ds1, 39 @ - .equ En1, 40 @ - .equ Fn1, 41 @ - .equ Fs1, 42 @ - .equ Gn1, 43 @ - .equ Gs1, 44 @ - .equ An1, 45 @ - .equ As1, 46 @ - .equ Bn1, 47 @ - .equ Cn2, 48 @ - .equ Cs2, 49 @ - .equ Dn2, 50 @ - .equ Ds2, 51 @ - .equ En2, 52 @ - .equ Fn2, 53 @ - .equ Fs2, 54 @ - .equ Gn2, 55 @ - .equ Gs2, 56 @ - .equ An2, 57 @ - .equ As2, 58 @ - .equ Bn2, 59 @ - .equ Cn3, 60 @ - .equ Cs3, 61 @ - .equ Dn3, 62 @ - .equ Ds3, 63 @ - .equ En3, 64 @ - .equ Fn3, 65 @ - .equ Fs3, 66 @ - .equ Gn3, 67 @ - .equ Gs3, 68 @ - .equ An3, 69 @ 440Hz - .equ As3, 70 @ - .equ Bn3, 71 @ - .equ Cn4, 72 @ - .equ Cs4, 73 @ - .equ Dn4, 74 @ - .equ Ds4, 75 @ - .equ En4, 76 @ - .equ Fn4, 77 @ - .equ Fs4, 78 @ - .equ Gn4, 79 @ - .equ Gs4, 80 @ - .equ An4, 81 @ - .equ As4, 82 @ - .equ Bn4, 83 @ - .equ Cn5, 84 @ - .equ Cs5, 85 @ - .equ Dn5, 86 @ - .equ Ds5, 87 @ - .equ En5, 88 @ - .equ Fn5, 89 @ - .equ Fs5, 90 @ - .equ Gn5, 91 @ - .equ Gs5, 92 @ - .equ An5, 93 @ - .equ As5, 94 @ - .equ Bn5, 95 @ - .equ Cn6, 96 @ - .equ Cs6, 97 @ - .equ Dn6, 98 @ - .equ Ds6, 99 @ - .equ En6, 100 @ - .equ Fn6, 101 @ - .equ Fs6, 102 @ - .equ Gn6, 103 @ - .equ Gs6, 104 @ - .equ An6, 105 @ - .equ As6, 106 @ - .equ Bn6, 107 @ - .equ Cn7, 108 @ - .equ Cs7, 109 @ - .equ Dn7, 110 @ - .equ Ds7, 111 @ - .equ En7, 112 @ - .equ Fn7, 113 @ - .equ Fs7, 114 @ - .equ Gn7, 115 @ - .equ Gs7, 116 @ - .equ An7, 117 @ - .equ As7, 118 @ - .equ Bn7, 119 @ - .equ Cn8, 120 @ - .equ Cs8, 121 @ - .equ Dn8, 122 @ - .equ Ds8, 123 @ - .equ En8, 124 @ - .equ Fn8, 125 @ - .equ Fs8, 126 @ - .equ Gn8, 127 @ - -@ velocity - - .equ v000, 0 @ - .equ v001, 1 @ - .equ v002, 2 @ - .equ v003, 3 @ - .equ v004, 4 @ - .equ v005, 5 @ - .equ v006, 6 @ - .equ v007, 7 @ - .equ v008, 8 @ - .equ v009, 9 @ - .equ v010, 10 @ - .equ v011, 11 @ - .equ v012, 12 @ - .equ v013, 13 @ - .equ v014, 14 @ - .equ v015, 15 @ - .equ v016, 16 @ - .equ v017, 17 @ - .equ v018, 18 @ - .equ v019, 19 @ - .equ v020, 20 @ - .equ v021, 21 @ - .equ v022, 22 @ - .equ v023, 23 @ - .equ v024, 24 @ - .equ v025, 25 @ - .equ v026, 26 @ - .equ v027, 27 @ - .equ v028, 28 @ - .equ v029, 29 @ - .equ v030, 30 @ - .equ v031, 31 @ - .equ v032, 32 @ - .equ v033, 33 @ - .equ v034, 34 @ - .equ v035, 35 @ - .equ v036, 36 @ - .equ v037, 37 @ - .equ v038, 38 @ - .equ v039, 39 @ - .equ v040, 40 @ - .equ v041, 41 @ - .equ v042, 42 @ - .equ v043, 43 @ - .equ v044, 44 @ - .equ v045, 45 @ - .equ v046, 46 @ - .equ v047, 47 @ - .equ v048, 48 @ - .equ v049, 49 @ - .equ v050, 50 @ - .equ v051, 51 @ - .equ v052, 52 @ - .equ v053, 53 @ - .equ v054, 54 @ - .equ v055, 55 @ - .equ v056, 56 @ - .equ v057, 57 @ - .equ v058, 58 @ - .equ v059, 59 @ - .equ v060, 60 @ - .equ v061, 61 @ - .equ v062, 62 @ - .equ v063, 63 @ - .equ v064, 64 @ - .equ v065, 65 @ - .equ v066, 66 @ - .equ v067, 67 @ - .equ v068, 68 @ - .equ v069, 79 @ - .equ v070, 70 @ - .equ v071, 71 @ - .equ v072, 72 @ - .equ v073, 73 @ - .equ v074, 74 @ - .equ v075, 75 @ - .equ v076, 76 @ - .equ v077, 77 @ - .equ v078, 78 @ - .equ v079, 79 @ - .equ v080, 80 @ - .equ v081, 81 @ - .equ v082, 82 @ - .equ v083, 83 @ - .equ v084, 84 @ - .equ v085, 85 @ - .equ v086, 86 @ - .equ v087, 87 @ - .equ v088, 88 @ - .equ v089, 89 @ - .equ v090, 90 @ - .equ v091, 91 @ - .equ v092, 92 @ - .equ v093, 93 @ - .equ v094, 94 @ - .equ v095, 95 @ - .equ v096, 96 @ - .equ v097, 97 @ - .equ v098, 98 @ - .equ v099, 99 @ - .equ v100, 100 @ - .equ v101, 101 @ - .equ v102, 102 @ - .equ v103, 103 @ - .equ v104, 104 @ - .equ v105, 105 @ - .equ v106, 106 @ - .equ v107, 107 @ - .equ v108, 108 @ - .equ v109, 109 @ - .equ v110, 110 @ - .equ v111, 111 @ - .equ v112, 112 @ - .equ v113, 113 @ - .equ v114, 114 @ - .equ v115, 115 @ - .equ v116, 116 @ - .equ v117, 117 @ - .equ v118, 118 @ - .equ v119, 119 @ - .equ v120, 120 @ - .equ v121, 121 @ - .equ v122, 122 @ - .equ v123, 123 @ - .equ v124, 124 @ - .equ v125, 125 @ - .equ v126, 126 @ - .equ v127, 127 @ - -@ exact gate time parameter for N?? - - .equ gtp1, 1 @ - .equ gtp2, 2 @ - .equ gtp3, 3 @ - -@ parameter of MODT - - .equ mod_vib,0 @ vibrate - .equ mod_tre,1 @ tremolo - .equ mod_pan,2 @ auto-panpot - -@ parameter of MEMACC - - .equ mem_set,0 @ - .equ mem_add,1 @ - .equ mem_sub,2 @ - .equ mem_mem_set,3 @ - .equ mem_mem_add,4 @ - .equ mem_mem_sub,5 @ - .equ mem_beq,6 @ - .equ mem_bne,7 @ - .equ mem_bhi,8 @ - .equ mem_bhs,9 @ - .equ mem_bls,10 @ - .equ mem_blo,11 @ - .equ mem_mem_beq,12 @ - .equ mem_mem_bne,13 @ - .equ mem_mem_bhi,14 @ - .equ mem_mem_bhs,15 @ - .equ mem_mem_bls,16 @ - .equ mem_mem_blo,17 @ - - .equ reverb_set,0x80 @ SOUND_MODE_REVERB_SET - .equ PAM, PAN @ diff --git a/src/crt0.s b/src/crt0.s new file mode 100644 index 000000000..049392be9 --- /dev/null +++ b/src/crt0.s @@ -0,0 +1,227 @@ + .include "constants/gba_constants.inc" + .include "constants/misc_constants.inc" + .include "constants/version.inc" + + .syntax unified + + .global Start + + .text + + .arm + +Start: @ 8000000 + b Init + + .include "asm/rom_header.inc" + +@ 80000C0 + .word 0 + + .global GPIOPortData +GPIOPortData: @ 80000C4 + .hword 0 + + .global GPIOPortDirection +GPIOPortDirection: @ 80000C6 + .hword 0 + + .global GPIOPortReadEnable +GPIOPortReadEnable: @ 80000C8 + .hword 0 + + .space 6 + +@ 80000D0 + +@ TODO: figure out what this data is + + .ifdef GERMAN + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte GAME_VERSION + .4byte GAME_LANGUAGE + .ifdef SAPPHIRE + .ascii "pokemon sapphire version" + .space 8 + .else + .ascii "pokemon ruby version" + .space 12 + .endif + .4byte gMonFrontPicTable + .4byte gMonBackPicTable + .4byte gMonPaletteTable + .4byte gMonShinyPaletteTable + .4byte gMonIconTable + .4byte gMonIconPaletteIndices + .4byte gMonIconPaletteTable + .4byte gSpeciesNames + .4byte gMoveNames + .4byte gDecorations + .4byte 0x1220 + .4byte 0x1340 + .4byte 0x18 + .4byte 0x938 + .4byte 0x3A8C + .4byte 0x46 + .4byte 0x836 + .4byte 0x84C + .4byte 0x182 + .4byte 0xA0A0A07 + .4byte 0xC060C0C + .4byte 0xC121006 + .4byte 0x8010B0F + .4byte 0xC + .4byte 0x890 + .4byte 0x3AC0 + .4byte 0x234 + .4byte 0x238 + .4byte 9 + .4byte 0xA + .4byte 0 + .4byte 8 + .4byte 0x556 + .4byte 0x557 + .4byte 0x312F + .4byte 0x311B + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0xFFFFFFFF + .endif + + .arm + .align 2, 0 + .global Init +Init: + mov r0, PSR_IRQ_MODE + msr cpsr_cf, r0 + ldr sp, sp_irq + mov r0, PSR_SYS_MODE + msr cpsr_cf, r0 + ldr sp, sp_sys + ldr r1, =INTR_VECTOR + adr r0, IntrMain + str r0, [r1] + ldr r1, =AgbMain + mov lr, pc + bx r1 + b Init + + .align 2, 0 +sp_sys: .word IWRAM_END - 0x1a0 +sp_irq: .word IWRAM_END - 0x60 + + .arm + .align 2, 0 + .global IntrMain +IntrMain: + mov r3, REG_BASE + add r3, r3, 0x200 + ldr r2, [r3, OFFSET_REG_IE - 0x200] + ldrh r1, [r3, OFFSET_REG_IME - 0x200] + mrs r0, spsr + stmdb sp!, {r0-r3,lr} + mov r0, 1 + strh r0, [r3, OFFSET_REG_IME - 0x200] + and r1, r2, r2, lsr 16 + mov r12, 0 + ands r0, r1, INTR_FLAG_SERIAL + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER3 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_HBLANK + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_VBLANK + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_VCOUNT + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER0 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER1 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER2 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA0 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA1 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA2 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA3 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_KEYPAD + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_GAMEPAK + strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200] +IntrMain_Loop: + bne IntrMain_Loop +IntrMain_FoundIntr: + strh r0, [r3, OFFSET_REG_IF - 0x200] + mov r1, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_HBLANK + bic r2, r2, r0 + and r1, r1, r2 + strh r1, [r3, OFFSET_REG_IE - 0x200] + mrs r3, cpsr + bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK + orr r3, r3, PSR_SYS_MODE + msr cpsr_cf, r3 + ldr r1, =gIntrTable + add r1, r1, r12 + ldr r0, [r1] + stmdb sp!, {lr} + adr lr, IntrMain_RetAddr + bx r0 +IntrMain_RetAddr: + ldmia sp!, {lr} + mrs r3, cpsr + bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK + orr r3, r3, PSR_I_BIT | PSR_IRQ_MODE + msr cpsr_cf, r3 + ldmia sp!, {r0-r3,lr} + strh r2, [r3, OFFSET_REG_IE - 0x200] + strh r1, [r3, OFFSET_REG_IME - 0x200] + msr spsr_cf, r0 + bx lr + + .pool + + .align 2, 0 @ Don't pad with nop. diff --git a/src/libs/libagbsyscall.s b/src/libs/libagbsyscall.s new file mode 100644 index 000000000..cdf6ca905 --- /dev/null +++ b/src/libs/libagbsyscall.s @@ -0,0 +1,91 @@ + .include "include/macros.inc" + .syntax unified + + .text + + thumb_func_start ArcTan2 +ArcTan2: @ 81E07E0 + swi 0xA + bx lr + thumb_func_end ArcTan2 + + thumb_func_start BgAffineSet +BgAffineSet: @ 81E07E4 + swi 0xE + bx lr + thumb_func_end BgAffineSet + + thumb_func_start CpuFastSet +CpuFastSet: @ 81E07E8 + swi 0xC + bx lr + thumb_func_end CpuFastSet + + thumb_func_start CpuSet +CpuSet: @ 81E07EC + swi 0xB + bx lr + thumb_func_end CpuSet + + thumb_func_start LZ77UnCompVram +LZ77UnCompVram: @ 81E07F4 + swi 0x12 + bx lr + thumb_func_end LZ77UnCompVram + + thumb_func_start LZ77UnCompWram +LZ77UnCompWram: @ 81E07F8 + swi 0x11 + bx lr + thumb_func_end LZ77UnCompWram + + thumb_func_start ObjAffineSet +ObjAffineSet: @ 81E0804 + swi 0xF + bx lr + thumb_func_end ObjAffineSet + + thumb_func_start RLUnCompVram +RLUnCompVram: @ 81E0808 + swi 0x15 + bx lr + thumb_func_end RLUnCompVram + + thumb_func_start RLUnCompWram +RLUnCompWram: @ 81E080C + swi 0x14 + bx lr + thumb_func_end RLUnCompWram + + thumb_func_start RegisterRamReset +RegisterRamReset: @ 81E0810 + swi 0x1 + bx lr + thumb_func_end RegisterRamReset + + thumb_func_start SoftReset +SoftReset: @ 81E0814 + ldr r3, =0x04000208 + movs r2, 0 + strb r2, [r3] + ldr r1, =0x03007f00 @ User Stack + mov sp, r1 + swi 0x1 + swi 0 + .pool + thumb_func_end SoftReset + + thumb_func_start Sqrt +Sqrt: @ 81E082C + swi 0x8 + bx lr + thumb_func_end Sqrt + + thumb_func_start VBlankIntrWait +VBlankIntrWait: @ 81E0830 + movs r2, 0 + swi 0x5 + bx lr + thumb_func_end VBlankIntrWait + + .align 2, 0 @ Don't pad with nop. diff --git a/src/libs/libgcnmultiboot.s b/src/libs/libgcnmultiboot.s new file mode 100644 index 000000000..8c8b94998 --- /dev/null +++ b/src/libs/libgcnmultiboot.s @@ -0,0 +1,641 @@ +@ This library can be used to download and execute a multi-boot image from +@ a GameCube using the JOY Bus protocol over the link cable. + + .include "include/macros.inc" + .include "constants/constants.inc" + + .equiv GCMB_STRUCT_COUNTER1, 0x00 + .equiv GCMB_STRUCT_COUNTER2, 0x01 + .equiv GCMB_STRUCT_MBPROGRESS, 0x02 + .equiv GCMB_STRUCT_SAVEDVCOUNT, 0x03 + .equiv GCMB_STRUCT_KEYA, 0x04 + .equiv GCMB_STRUCT_KEYB, 0x08 + .equiv GCMB_STRUCT_KEYC, 0x0C + .equiv GCMB_STRUCT_BOOT_KEY, 0x10 + .equiv GCMB_STRUCT_IMAGE_SIZE, 0x12 + .equiv GCMB_STRUCT_SESSION_KEY, 0x14 + .equiv GCMB_STRUCT_HASH_VAL, 0x18 + .equiv GCMB_STRUCT_KEYC_DERIVATION, 0x1C + .equiv GCMB_STRUCT_BASE_DEST_PTR, 0x20 + .equiv GCMB_STRUCT_CUR_DEST_PTR, 0x24 + .equiv GCMB_STRUCT_SERIAL_INTR_HANDLER, 0x28 + + .equiv ROM_HEADER_NINTENDO_LOGO_OFFSET, 0x04 + .equiv ROM_HEADER_NINTENDO_LOGO_LENGTH, 0x98 + .equiv ROM_HEADER_NINTENDO_LOGO_END, 0xA0 + + .equiv MBPROGRESS_NONE, 0x00 + .equiv MBPROGRESS_LOGO_CORRECT, 0x01 + .equiv MBPROGRESS_READY_TO_BOOT, 0x02 + + .equiv GCMB_MAGIC_BOOTKEY_HASHVAL, 0xBB + .equiv GCMB_MAGIC_BOOTKEY, 0xBB + .equiv GCMB_MAGIC_COUNTER2, 0xCC + .equiv GCMB_MAGIC_KEYA, 0xDD + .equiv GCMB_MAGIC_KEYB, 0xEE + .equiv GCMB_MAGIC_KEYCDERIVATION, 0xFF + + .syntax unified + + .text + + thumb_func_start GameCubeMultiBoot_Hash +GameCubeMultiBoot_Hash: @ 81DCB38 + push {r4,lr} + ldr r4, pool_HashVal + eors r3, r1 + movs r2, 0x20 + +GameCubeMultiBoot_Hash_Loop: + lsrs r3, 1 + bcc GameCubeMultiBoot_Hash_SkipEor + + eors r3, r4 + +GameCubeMultiBoot_Hash_SkipEor: + subs r2, 0x1 + bne GameCubeMultiBoot_Hash_Loop + + pop {r4,pc} + thumb_func_end GameCubeMultiBoot_Hash + + thumb_func_start GameCubeMultiBoot_Main +@ void GameCubeMultiBoot_Main(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_Main: @ 81DCB4C + @ If there is no interrupt handler, skip counter manipulation + ldr r1, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + cmp r1, 0 + beq GameCubeMultiBoot_Main_SkipCounters + @ Increment the second counter + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + adds r1, 0x1 + strb r1, [r0, GCMB_STRUCT_COUNTER2] + @ If there is nothing more to do, bail out + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_READY_TO_BOOT + beq GameCubeMultiBoot_Main_Return + @ Save current interrupt master register value + ldr r3, pool_InterruptRegs + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + @ Disable all interrupts + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + @ Increment the first counter, if it's less than or equal to 10. + ldrb r1, [r0, GCMB_STRUCT_COUNTER1] + cmp r1, 0xA + bgt GameCubeMultiBoot_Main_SkipCounter1Inc + adds r1, 0x1 + strb r1, [r0, GCMB_STRUCT_COUNTER1] +GameCubeMultiBoot_Main_SkipCounter1Inc: + @ Load the saved interrupt master register value (re-enables interrupts if they were enabled before) + strh r2, [r3, OFFSET_REG_IME - 0x200] +GameCubeMultiBoot_Main_SkipCounters: + @ Initialise multiboot structures if required + bcs GameCubeMultiBoot_Init + @ Skip this section (check Nintendo logo) if the check has already passed + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_NONE + bne GameCubeMultiBoot_Main_SkipLogoCheck + @ Bail out if no multiboot image data has been transferred yet + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] + subs r1, r2 + beq GameCubeMultiBoot_Main_Return2 + @ Also bail out if not enough data has been transferred + cmp r1, ROM_HEADER_NINTENDO_LOGO_END + bcc GameCubeMultiBoot_Main_Return2 + @ Compare the Nintendo logo of the transferred multiboot image header, with the one in the ROM image of the inserted cart + push {r4-r6} + movs r1, ROM_HEADER_NINTENDO_LOGO_LENGTH + adds r2, ROM_HEADER_NINTENDO_LOGO_OFFSET + ldr r4, pool_NintendoLogo +GameCubeMultiBoot_Main_LogoCmpLoop: + ldm r2!, {r5} + ldm r4!, {r6} + cmp r5, r6 + bne GameCubeMultiBoot_Main_LogoCmpEnd + subs r1, 0x4 + bne GameCubeMultiBoot_Main_LogoCmpLoop + ldm r2!, {r5} + ldm r4!, {r6} + eors r5, r6 + lsrs r5, 8 + str r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] +GameCubeMultiBoot_Main_LogoCmpEnd: + pop {r4-r6} + @ Throw everything away if the logo data didn't match + bne GameCubeMultiBoot_Init + @ Logo matched, set the relevent multiboot progress bit + movs r1, MBPROGRESS_LOGO_CORRECT + strb r1, [r0, GCMB_STRUCT_MBPROGRESS] + @ XOR together KeyA and KeyB to get the initial multiboot image checksum value + ldr r1, [r0, GCMB_STRUCT_KEYA] + ldr r2, [r0, GCMB_STRUCT_KEYB] + eors r1, r2 + str r1, [r0, GCMB_STRUCT_HASH_VAL] + @ ...also use it as the initial value for the image encryption session key. Algorithm is the same as the GBA BIOS multiboot: sessionkey = (initialvalue * 0x6177614b) + 1 + ldr r2, pool_Kawa + muls r1, r2 + adds r1, 0x1 + str r1, [r0, GCMB_STRUCT_SESSION_KEY] +GameCubeMultiBoot_Main_Return: + bx lr +GameCubeMultiBoot_Main_SkipLogoCheck: + @ If this code is executed, then the logo check has passed, and the data being transferred in is encrypted. + @ Set up registers. + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + mov r12, r1 + ldr r3, [r0, GCMB_STRUCT_HASH_VAL] + push {r4-r7} + ldr r4, [r0, GCMB_STRUCT_BASE_DEST_PTR] + ldr r5, pool_Kawa + ldr r6, [r0, GCMB_STRUCT_SESSION_KEY] + ldr r7, pool_HashVal +GameCubeMultiBoot_Main_ImageDecryptHashLoop: + @ If there's no more data, break out of the loop + cmp r4, r12 + bcs GameCubeMultiBoot_Main_ImageDecryptHashEnd + @ Get the next uint32 + ldr r1, [r4] + @ Decrypt the ciphertext: plaintext = (ciphertext ^ sessionkey) + hashval + eors r1, r6 + adds r1, r3 + @ Save the current uint32 of plaintext and advance the pointer + stm r4!, {r1} + @ Advance the hashval with this uint32 of plaintext -- this is the same code as GameCubeMultiBoot_Hash. + eors r3, r1 + movs r2, 0x20 +GameCubeMultiBoot_Main_HashLoop: + lsrs r3, 1 + bcc GameCubeMultiBoot_Main_HashSkipEor + eors r3, r7 +GameCubeMultiBoot_Main_HashSkipEor: + subs r2, 0x1 + bne GameCubeMultiBoot_Main_HashLoop + @ Advance the sessionkey with the usual algorithm: sessionkey = (sessionkey * 0x6177614b) + 1 + muls r6, r5 + adds r6, 0x1 + b GameCubeMultiBoot_Main_ImageDecryptHashLoop +GameCubeMultiBoot_Main_ImageDecryptHashEnd: + @ Save the new pointer, sessionkey, hashval + str r4, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r6, [r0, GCMB_STRUCT_SESSION_KEY] + pop {r4-r7} + str r3, [r0, GCMB_STRUCT_HASH_VAL] + @ Bail out if the image size is unknown + ldrh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + cmp r1, 0 + bne GameCubeMultiBoot_Main_Return2 + @ Bail out if no image data has been transferred + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] + cmp r1, r2 + bne GameCubeMultiBoot_Main_Return2 + @ If KeyC hasn't been generated yet, go generate it + ldr r1, [r0, GCMB_STRUCT_KEYC] + cmp r1, 0 + beq GameCubeMultiBoot_Main_GenerateKeyC + @ If the other side hasn't sent its boot key yet, bail out + ldrh r1, [r0, GCMB_STRUCT_BOOT_KEY] + cmp r1, 0 + beq GameCubeMultiBoot_Main_Return + @ Save off LR so it doesn't get clobbered by the upcoming function call + mov r12, lr + @ Generate the real boot key, which is the checksum of a hardcoded value and KeyC + movs r1, GCMB_MAGIC_BOOTKEY_HASHVAL + ldr r3, [r0, GCMB_STRUCT_KEYC] + bl GameCubeMultiBoot_Hash + ldrh r1, [r0, GCMB_STRUCT_BOOT_KEY] + @ Restore the saved LR value + mov lr, r12 + @ Compare the two boot keys (real and passed in), if they don't match then throw everything away + subs r1, r3 + bne GameCubeMultiBoot_Init + @ The two boot keys matched, tell the caller that the image is ready to boot + movs r1, MBPROGRESS_READY_TO_BOOT + strb r1, [r0, GCMB_STRUCT_MBPROGRESS] + @ Nothing more to do, return. + bx lr +GameCubeMultiBoot_Main_GenerateKeyC: + @ Save off LR so it doesn't get clobbered by the upcoming function call + mov r12, lr + @ KeyC = (SavedVCount << 24) - 1 + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + lsls r1, 24 + subs r1, 0x1 + str r1, [r0, GCMB_STRUCT_KEYC] + @ Hash the KeyC with the multiboot image checksum to generate the KeyC derivation material to be sent to the other side of the link + bl GameCubeMultiBoot_Hash + @ Make sure the sent KeyC derivation material contains a magic value so that the other side can detect it + lsls r3, 8 + adds r3, GCMB_MAGIC_KEYCDERIVATION + @ Save off the KeyC derivation material and return to caller + str r3, [r0, GCMB_STRUCT_KEYC_DERIVATION] + bx r12 +GameCubeMultiBoot_Main_Return2: + bx lr + thumb_func_end GameCubeMultiBoot_Main + + .align 2, 0 + +pool_HashVal: .4byte 0xa1c1 + +pool_Kawa: .ascii "Kawa" @ name of BIOS developer + +pool_NintendoLogo: .4byte RomHeaderNintendoLogo + + thumb_func_start GameCubeMultiBoot_ExecuteProgram +@ void GameCubeMultiBoot_ExecuteProgram(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_ExecuteProgram: @ 81DCC4C + @ If there's no multiboot image ready, just return to caller + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_READY_TO_BOOT + bne GameCubeMultiBoot_ExecuteProgram_Fail + @ Disable interrupts + ldr r3, pool_InterruptRegs + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + @ Jump to the real entry point of the multiboot image (past the image header), in ARM mode + ldr r1, pool_MultiBootLoadAddr + adds r1, 0xC0 + bx r1 +GameCubeMultiBoot_ExecuteProgram_Fail: + bx lr + thumb_func_end GameCubeMultiBoot_ExecuteProgram + + thumb_func_start GameCubeMultiBoot_Init +@ void GameCubeMultiBoot_Init(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_Init: @ 81DCC60 + ldr r3, pool_InterruptRegs + +@ Save IME register. + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + +@ Disable interrupts. + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + +@ Set the handler to the "Stop" routine. +@ Unless the first command that is received is a device reset command, the +@ "Stop" routine will be executed and no further commands will be processed. + adr r3, GcMbIntrHandler_Stop + str r3, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + + ldrb r3, [r0, 0x3] + push {r3} + ldrb r3, [r0, 0x1] + push {r0,r3} + + adds r3, r0, 0 + adds r3, GCMB_STRUCT_BASE_DEST_PTR + +@ clear all but the last 3 fields of the struct +GameCubeMultiBoot_Init_ClearStructLoop: + stm r0!, {r1} + cmp r0, r3 + blo GameCubeMultiBoot_Init_ClearStructLoop + + pop {r0,r3} + lsrs r3, 1 + strb r3, [r0, 0x3] + pop {r3} + strb r3, [r0, 0x1] + + ldr r3, pool_SerialRegs + +@ Turn off JOY Bus mode. + lsls r0, r3, 10 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] + +@ Turn on JOY Bus mode. + movs r0, 0xC0 + lsls r0, 8 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] + +@ Init JOY Bus registers. + movs r0, 0x47 + strh r0, [r3, OFFSET_REG_JOYCNT - 0x120] + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + + ldr r3, pool_InterruptRegs + +@ Acknowledge serial interrupt. + movs r0, INTR_FLAG_SERIAL + strh r0, [r3, OFFSET_REG_IF - 0x200] + +@ Enable serial interrupt. + ldrh r1, [r3, OFFSET_REG_IE - 0x200] + orrs r1, r0 + strh r1, [r3, OFFSET_REG_IE - 0x200] + +@ Restore IME register. + strh r2, [r3, OFFSET_REG_IME - 0x200] + + bx lr + thumb_func_end GameCubeMultiBoot_Init + + non_word_aligned_thumb_func_start GameCubeMultiBoot_HandleSerialInterrupt +@ void GameCubeMultiBoot_HandleSerialInterrupt(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_HandleSerialInterrupt: @ 81DCCAA + ldr r3, pool_SerialRegs + +@ Acknowledge reset/receive/send flags. + ldrh r1, [r3, OFFSET_REG_JOYCNT - 0x120] + strh r1, [r3, OFFSET_REG_JOYCNT - 0x120] + + movs r2, 0 + strb r2, [r0] + + ldr r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + cmp r2, 0 + beq GameCubeMultiBoot_HandleSerialInterruptDone + + lsrs r1, 1 @ was a device reset command received? + bcs GameCubeMultiBoot_BeginHandshake @ branch if so + + mov pc, r2 + + .align 2, 0 + +@ Zero the status and the interrupt handler pointer. +@ Commands from the GameCube will not be processed after this is executed +@ unless GameCubeMultiBoot_Init() is called again. +GcMbIntrHandler_Stop: + movs r2, 0 + strh r2, [r3, OFFSET_REG_JOYSTAT - 0x120] + +GameCubeMultiBoot_SetInterruptHandler: + str r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + +GameCubeMultiBoot_ReadVCount: + ldr r3, pool_RegDispstat + ldrh r1, [r3, OFFSET_REG_VCOUNT - OFFSET_REG_DISPSTAT] + strb r1, [r0, 0x3] + +GameCubeMultiBoot_HandleSerialInterruptDone: + bx lr + +GameCubeMultiBoot_BeginHandshake: + @ Throw away anything that got sent + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ Send the game code, the other side of the link must send back the same game code + ldr r1, pool_RubyUSAGameCode + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + movs r1, 0x10 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ Use the saved VCount value to provide 8 bits of entropy for KeyB + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + strb r1, [r0, GCMB_STRUCT_KEYB + 1] + @ If a multiboot image has been transferred at least enough such that the Nintendo logo check has passed, stop everything. + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, 0 + bne GcMbIntrHandler_Stop + @ Set the image destination pointers. + ldr r1, pool_MultiBootLoadAddr + str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + @ Set the new interrupt handler. + adr r2, GcMbIntrHandler_CheckGameCodeSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckGameCodeSent: @ 81DCCEC + lsls r1, 31 + bcc GcMbIntrHandler_Stop @ stop if send failed + bmi GameCubeMultiBoot_CheckHandshakeResponse @ branch if receive is complete + +@ If the response hasn't been fully received yet, +@ check again upon the next interrupt. + adr r2, GcMbIntrHandler_CheckHandshakeResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckHandshakeResponse: @ 81DCCF8 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ stop if not + +GameCubeMultiBoot_CheckHandshakeResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + ldr r2, pool_RubyUSAGameCode + cmp r1, r2 + bne GcMbIntrHandler_Stop @ stop if the GameCube didn't reply with the same game code + @ Use the saved VCount value to provide another 8 bits of entropy for KeyB. + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + strb r1, [r0, GCMB_STRUCT_KEYB + 3] + adr r2, GcMbIntrHandler_ReceiveKeyA + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_ReceiveKeyA: @ 81DCD0C + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ make sure top 8 bits of the received value is the KeyA magic number, stop if KeyA is invalid + lsrs r2, r1, 24 + cmp r2, GCMB_MAGIC_KEYA + bne GcMbIntrHandler_Stop + @ save received KeyA + str r1, [r0, GCMB_STRUCT_KEYA] + @ use the second GameCubeMultiBoot_Main() counter as another 8 bits of entropy for KeyB + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + strb r1, [r0, GCMB_STRUCT_KEYB + 2] + movs r2, 0 + movs r3, 0 + ldr r1, [r0, GCMB_STRUCT_KEYB] + lsrs r1, 8 + @ make sure KeyB is valid (other side of the link is supposed to check KeyB too), if it's not then change the byte that was just set so it is +GameCubeMultiBoot_KeyBCheckLoop: + lsrs r1, 1 + adcs r2, r3 + cmp r1, 0 + bne GameCubeMultiBoot_KeyBCheckLoop + cmp r2, 0xE + bgt GameCubeMultiBoot_KeyBSaveNewByte + cmp r2, 0x7 + bge GameCubeMultiBoot_KeyBCheckEnd + movs r1, 0xFF +GameCubeMultiBoot_KeyBSaveNewByte: + strb r1, [r0, GCMB_STRUCT_KEYB + 2] +GameCubeMultiBoot_KeyBCheckEnd: + @ add in the KeyB magic number and send off KeyB + ldr r1, [r0, GCMB_STRUCT_KEYB] + adds r1, GCMB_MAGIC_KEYB + ldr r3, pool_SerialRegs + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + movs r1, 0x30 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ set new interrupt handler + adr r2, GcMbIntrHandler_CheckKeyBSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckKeyBSent: @ 81DCD4C + lsls r1, 31 + bcc GcMbIntrHandler_Stop @ stop if send failed + bmi GameCubeMultiBoot_CheckImageSizeResponse @ branch if receive is complete + adr r2, GcMbIntrHandler_CheckImageSizeResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckImageSizeResponse: @ 81DCD58 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not +GameCubeMultiBoot_CheckImageSizeResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + ldr r2, GameCubeMultiBoot_MaximumImageSizeUInt32s + cmp r1, r2 + bhs GcMbIntrHandler_Stop + adds r1, 0x1 + adds r1, r1 + strh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, 0 +GcMbIntrHandler_StopIfNotEqual: + bne GcMbIntrHandler_Stop + ldr r1, pool_MultiBootLoadAddr + str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + adr r2, GcMbIntrHandler_CheckImageResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckImageResponse: @ 81DCD7C + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not + ldr r2, [r0, GCMB_STRUCT_CUR_DEST_PTR] + movs r1, 0x4 + ands r1, r2 + adds r1, 0x8 + lsls r1, 2 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ get the recieved uint32 + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ put it in the current destination pointer and advance that pointer + stm r2!, {r1} + @ save off the advanced pointer + str r2, [r0, GCMB_STRUCT_CUR_DEST_PTR] + @ decrease the image size (in uint32s) + ldrh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + subs r1, 0x1 + strh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + @ branch away if the transfer is not yet complete + bne GameCubeMultiBoot_ReadVCount + +GcMbIntrHandler_SendCounter2: + @ send counter2 with magic number + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + lsls r1, 8 + adds r1, GCMB_MAGIC_COUNTER2 + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + adr r2, GcMbIntrHandler_CheckCounter2Sent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckCounter2Sent: + lsls r1, 31 + +GcMbIntrHandler_StopIfSendFailed: + bcc GcMbIntrHandler_Stop @ stop if send failed + @ if KeyC derivation value has not yet been generated, send Counter2 again, otherwise, send KeyC derivation + ldr r1, [r0, GCMB_STRUCT_KEYC_DERIVATION] + cmp r1, 0 + beq GcMbIntrHandler_SendCounter2 + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + adr r2, GcMbIntrHandler_CheckKeyCDerivationSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckKeyCDerivationSent: @ 81DCDB8 + lsls r1, 31 + bcc GcMbIntrHandler_StopIfSendFailed @ branch if send failed + bmi GameCubeMultiBoot_CheckBootKeyResponse @ branch if receive is complete + adr r2, GcMbIntrHandler_CheckBootKeyResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckBootKeyResponse: @ 81DCDC4 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_StopIfSendFailed @ branch if not + +GameCubeMultiBoot_CheckBootKeyResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ make sure received boot key contains expected magic number, stop if not + lsrs r2, r1, 24 + cmp r2, GCMB_MAGIC_BOOTKEY + bne GcMbIntrHandler_StopIfNotEqual + @ save received bootkey to be checked in GameCubeMultiBoot_Main() + strh r1, [r0, GCMB_STRUCT_BOOT_KEY] + @ stop if anything more gets sent + adr r2, GcMbIntrHandler_StopUnconditionally + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_StopUnconditionally: @ 81DCDD8 + b GcMbIntrHandler_Stop + + thumb_func_end GameCubeMultiBoot_HandleSerialInterrupt + + non_word_aligned_thumb_func_start GameCubeMultiBoot_Quit +@ void GameCubeMultiBoot_Quit()@ +GameCubeMultiBoot_Quit: @ 81DCDDA + ldr r3, pool_InterruptRegs + +@ Save IME register. + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + +@ Disable interrupts. + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + + ldr r3, pool_SerialRegs + +@ Acknowledge all JOYCNT flags. + movs r0, 0x7 + strh r0, [r3, OFFSET_REG_JOYCNT - 0x120] + +@ Turn off JOY Bus mode. + lsls r0, r3, 10 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] @ store 0x8000 + + ldr r3, pool_InterruptRegs + +@ Acknowledge serial interrupt. + movs r0, INTR_FLAG_SERIAL + strh r0, [r3, OFFSET_REG_IF - 0x200] + +@ Disable serial interrupt. + ldrh r1, [r3, OFFSET_REG_IE - 0x200] + bics r1, r0 + strh r1, [r3, OFFSET_REG_IE - 0x200] + +@ Restore IME register. + strh r2, [r3, OFFSET_REG_IME - 0x200] + + bx lr + thumb_func_end GameCubeMultiBoot_Quit + + .align 2, 0 + +GameCubeMultiBoot_MaximumImageSizeUInt32s: .4byte 0x00004000 + +pool_InterruptRegs: .4byte REG_BASE + 0x200 + +pool_SerialRegs: .4byte REG_BASE + 0x120 + +pool_RegDispstat: .4byte REG_DISPSTAT + +pool_RubyUSAGameCode: .ascii "AXVE" + +pool_MultiBootLoadAddr: .4byte EWRAM_START + + .align 2, 0 @ Don't pad with nop. diff --git a/src/libs/m4a_1.s b/src/libs/m4a_1.s new file mode 100644 index 000000000..be8b44488 --- /dev/null +++ b/src/libs/m4a_1.s @@ -0,0 +1,1911 @@ + .include "include/macros.inc" + .include "constants/gba_constants.inc" + .include "constants/m4a_constants.inc" + + .syntax unified + + .lcomm gUnknown_030007B8, 0x770 + + .text + + thumb_func_start umul3232H32 +umul3232H32: + adr r2, __umul3232H32 + bx r2 + .arm +__umul3232H32: + umull r2, r3, r0, r1 + add r0, r3, 0 + bx lr + thumb_func_end umul3232H32 + + thumb_func_start SoundMain +SoundMain: + ldr r0, lt_SOUND_INFO_PTR + ldr r0, [r0] + ldr r2, lt_ID_NUMBER + ldr r3, [r0, o_SoundInfo_ident] + cmp r2, r3 + beq SoundMain_1 + bx lr @ Exit the function if ident doesn't match ID_NUMBER. +SoundMain_1: + adds r3, 1 + str r3, [r0, o_SoundInfo_ident] + push {r4-r7,lr} + mov r1, r8 + mov r2, r9 + mov r3, r10 + mov r4, r11 + push {r0-r4} + sub sp, 0x18 + ldrb r1, [r0, o_SoundInfo_maxLines] + cmp r1, 0 @ if maxLines is 0, there is no maximum + beq SoundMain_3 + ldr r2, lt_REG_VCOUNT + ldrb r2, [r2] + cmp r2, VCOUNT_VBLANK + bhs SoundMain_2 + adds r2, TOTAL_SCANLINES +SoundMain_2: + adds r1, r2 +SoundMain_3: + str r1, [sp, 0x14] + ldr r3, [r0, o_SoundInfo_func] + cmp r3, 0 + beq SoundMain_4 + ldr r0, [r0, o_SoundInfo_intp] + bl _081DD25E + ldr r0, [sp, 0x18] +SoundMain_4: + ldr r3, [r0, o_SoundInfo_CgbSound] + bl _081DD25E + ldr r0, [sp, 0x18] + ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank] + mov r8, r3 + ldr r5, lt_o_SoundInfo_pcmBuffer + adds r5, r0 + ldrb r4, [r0, o_SoundInfo_pcmDmaCounter] + subs r7, r4, 1 + bls SoundMain_5 + ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + subs r1, r7 + mov r2, r8 + muls r2, r1 + adds r5, r2 +SoundMain_5: + str r5, [sp, 0x8] + ldr r6, lt_PCM_DMA_BUF_SIZE + ldr r3, lt_SoundMainRAM_Buffer + bx r3 + + .align 2, 0 +lt_SOUND_INFO_PTR: .word SOUND_INFO_PTR +lt_ID_NUMBER: .word ID_NUMBER +lt_SoundMainRAM_Buffer: .word SoundMainRAM_Buffer + 1 +lt_REG_VCOUNT: .word REG_VCOUNT +lt_o_SoundInfo_pcmBuffer: .word o_SoundInfo_pcmBuffer +lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE + thumb_func_end SoundMain + + thumb_func_start SoundMainRAM +SoundMainRAM: + ldrb r3, [r0, o_SoundInfo_reverb] + cmp r3, 0 + beq SoundMainRAM_NoReverb + adr r1, SoundMainRAM_Reverb + bx r1 + .arm +SoundMainRAM_Reverb: + cmp r4, 0x2 + addeq r7, r0, o_SoundInfo_pcmBuffer + addne r7, r5, r8 + mov r4, r8 +_081DCEC4: + ldrsb r0, [r5, r6] + ldrsb r1, [r5] + add r0, r0, r1 + ldrsb r1, [r7, r6] + add r0, r0, r1 + ldrsb r1, [r7], 0x1 + add r0, r0, r1 + mul r1, r0, r3 + mov r0, r1, asr 9 + tst r0, 0x80 + addne r0, r0, 0x1 + strb r0, [r5, r6] + strb r0, [r5], 0x1 + subs r4, r4, 0x1 + bgt _081DCEC4 + adr r0, _081DCF36 + 1 @ plus 1 because THUMB + bx r0 + .thumb +SoundMainRAM_NoReverb: + movs r0, 0 + mov r1, r8 + adds r6, r5 + lsrs r1, 3 + bcc SoundMainRAM_NoReverb_Ok + stm r5!, {r0} + stm r6!, {r0} +SoundMainRAM_NoReverb_Ok: + lsrs r1, 1 + bcc SoundMainRAM_NoReverb_Loop + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} +SoundMainRAM_NoReverb_Loop: + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + subs r1, 1 + bgt SoundMainRAM_NoReverb_Loop +_081DCF36: + ldr r4, [sp, 0x18] + ldr r0, [r4, o_SoundInfo_divFreq] + mov r12, r0 + ldrb r0, [r4, o_SoundInfo_maxChans] + adds r4, o_SoundInfo_chans + +SoundMainRAM_ChanLoop: + str r0, [sp, 0x4] + ldr r3, [r4, o_SoundChannel_wav] + ldr r0, [sp, 0x14] + cmp r0, 0 + beq _081DCF60 + ldr r1, =REG_VCOUNT + ldrb r1, [r1] + cmp r1, VCOUNT_VBLANK + bhs _081DCF54 + adds r1, TOTAL_SCANLINES +_081DCF54: + cmp r1, r0 + blo _081DCF60 + b _081DD24A + + .pool + +_081DCF60: + ldrb r6, [r4, o_SoundChannel_status] + movs r0, 0xC7 + tst r0, r6 + bne _081DCF6A + b _081DD240 +_081DCF6A: + movs r0, 0x80 + tst r0, r6 + beq _081DCFA0 + movs r0, 0x40 + tst r0, r6 + bne _081DCFB0 + movs r6, 0x3 + strb r6, [r4, o_SoundChannel_status] + adds r0, r3, 0 + adds r0, 0x10 + ldr r1, [r4, o_SoundChannel_ct] + adds r0, r1 + str r0, [r4, o_SoundChannel_cp] + ldr r0, [r3, 0xC] + subs r0, r1 + str r0, [r4, o_SoundChannel_ct] + movs r5, 0 + strb r5, [r4, o_SoundChannel_ev] + str r5, [r4, o_SoundChannel_fw] + ldrb r2, [r3, 0x3] + movs r0, 0xC0 + tst r0, r2 + beq _081DCFF8 + movs r0, 0x10 + orrs r6, r0 + strb r6, [r4, o_SoundChannel_status] + b _081DCFF8 +_081DCFA0: + ldrb r5, [r4, o_SoundChannel_ev] + movs r0, 0x4 + tst r0, r6 + beq _081DCFB6 + ldrb r0, [r4, o_SoundChannel_iel] + subs r0, 1 + strb r0, [r4, o_SoundChannel_iel] + bhi _081DD006 +_081DCFB0: + movs r0, 0 + strb r0, [r4, o_SoundChannel_status] + b _081DD240 +_081DCFB6: + movs r0, 0x40 + tst r0, r6 + beq _081DCFD6 + ldrb r0, [r4, o_SoundChannel_release] + muls r5, r0 + lsrs r5, 8 + ldrb r0, [r4, o_SoundChannel_iev] + cmp r5, r0 + bhi _081DD006 +_081DCFC8: + ldrb r5, [r4, o_SoundChannel_iev] + cmp r5, 0 + beq _081DCFB0 + movs r0, 0x4 + orrs r6, r0 + strb r6, [r4, o_SoundChannel_status] + b _081DD006 +_081DCFD6: + movs r2, 0x3 + ands r2, r6 + cmp r2, 0x2 + bne _081DCFF4 + ldrb r0, [r4, o_SoundChannel_decay] + muls r5, r0 + lsrs r5, 8 + ldrb r0, [r4, o_SoundChannel_sustain] + cmp r5, r0 + bhi _081DD006 + adds r5, r0, 0 + beq _081DCFC8 + subs r6, 0x1 + strb r6, [r4, o_SoundChannel_status] + b _081DD006 +_081DCFF4: + cmp r2, 0x3 + bne _081DD006 +_081DCFF8: + ldrb r0, [r4, o_SoundChannel_attack] + adds r5, r0 + cmp r5, 0xFF + bcc _081DD006 + movs r5, 0xFF + subs r6, 0x1 + strb r6, [r4, o_SoundChannel_status] +_081DD006: + strb r5, [r4, o_SoundChannel_ev] + ldr r0, [sp, 0x18] + ldrb r0, [r0, o_SoundChannel_release] + adds r0, 0x1 + muls r0, r5 + lsrs r5, r0, 4 + ldrb r0, [r4, o_SoundChannel_rightVolume] + muls r0, r5 + lsrs r0, 8 + strb r0, [r4, o_SoundChannel_er] + ldrb r0, [r4, o_SoundChannel_leftVolume] + muls r0, r5 + lsrs r0, 8 + strb r0, [r4, o_SoundChannel_el] + movs r0, 0x10 + ands r0, r6 + str r0, [sp, 0x10] + beq _081DD03A + adds r0, r3, 0 + adds r0, 0x10 + ldr r1, [r3, 0x8] + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r3, 0xC] + subs r0, r1 + str r0, [sp, 0x10] +_081DD03A: + ldr r5, [sp, 0x8] + ldr r2, [r4, o_SoundChannel_ct] + ldr r3, [r4, o_SoundChannel_cp] + adr r0, _081DD044 + bx r0 + .arm +_081DD044: + str r8, [sp] + ldr r9, [r4, o_SoundChannel_fw] + ldrb r10, [r4, o_SoundChannel_er] + ldrb r11, [r4, o_SoundChannel_el] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x30 + beq _081DD068 + bl sub_81DD264 + b _081DD228 +_081DD068: + mov r10, r10, lsl 16 + mov r11, r11, lsl 16 + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x8 + beq _081DD19C +_081DD07C: + cmp r2, 0x4 + ble _081DD0EC + subs r2, r2, r8 + movgt r9, 0 + bgt _081DD0A8 + mov r9, r8 + add r2, r2, r8 + sub r8, r2, 0x4 + sub r9, r9, r8 + ands r2, r2, 0x3 + moveq r2, 0x4 +_081DD0A8: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD0B0: + ldrsb r0, [r3], 0x1 + mul r1, r10, r0 + bic r1, r1, 0xFF0000 + add r6, r1, r6, ror 8 + mul r1, r11, r0 + bic r1, r1, 0xFF0000 + add r7, r1, r7, ror 8 + adds r5, r5, 0x40000000 + bcc _081DD0B0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD0A8 + adds r8, r8, r9 + beq _081DD22C +_081DD0EC: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD0F4: + ldrsb r0, [r3], 0x1 + mul r1, r10, r0 + bic r1, r1, 0xFF0000 + add r6, r1, r6, ror 8 + mul r1, r11, r0 + bic r1, r1, 0xFF0000 + add r7, r1, r7, ror 8 + subs r2, r2, 0x1 + beq _081DD164 +_081DD118: + adds r5, r5, 0x40000000 + bcc _081DD0F4 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD07C + b _081DD22C +_081DD134: + ldr r0, [sp, 0x18] + cmp r0, 0 + beq _081DD158 + ldr r3, [sp, 0x14] + rsb lr, r2, 0 +_081DD148: + adds r2, r0, r2 + bgt _081DD1FC + sub lr, lr, r0 + b _081DD148 +_081DD158: + pop {r4,r12} + mov r2, 0 + b _081DD174 +_081DD164: + ldr r2, [sp, 0x10] + cmp r2, 0 + ldrne r3, [sp, 0xC] + bne _081DD118 +_081DD174: + strb r2, [r4, o_SoundChannel_status] + mov r0, r5, lsr 30 + bic r5, r5, 0xC0000000 + rsb r0, r0, 0x3 + mov r0, r0, lsl 3 + mov r6, r6, ror r0 + mov r7, r7, ror r0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + b _081DD234 +_081DD19C: + push {r4,r12} + ldr r1, [r4, o_SoundChannel_freq] + mul r4, r12, r1 + ldrsb r0, [r3] + ldrsb r1, [r3, 0x1]! + sub r1, r1, r0 +_081DD1B4: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD1BC: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r4 + movs lr, r9, lsr 23 + beq _081DD208 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD134 + subs lr, lr, 0x1 + addeq r0, r0, r1 +_081DD1FC: + ldrsbne r0, [r3, lr]! + ldrsb r1, [r3, 0x1]! + sub r1, r1, r0 +_081DD208: + adds r5, r5, 0x40000000 + bcc _081DD1BC + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD1B4 + sub r3, r3, 0x1 + pop {r4,r12} +_081DD228: + str r9, [r4, o_SoundChannel_fw] +_081DD22C: + str r2, [r4, o_SoundChannel_ct] + str r3, [r4, o_SoundChannel_cp] +_081DD234: + ldr r8, [sp] + add r0, pc, 0x1 + bx r0 + .thumb +_081DD240: + ldr r0, [sp, 0x4] + subs r0, 1 + ble _081DD24A + adds r4, SoundChannel_size + b SoundMainRAM_ChanLoop +_081DD24A: + ldr r0, [sp, 0x18] + ldr r3, =ID_NUMBER + str r3, [r0] + add sp, 0x1C + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r3} +_081DD25E: + bx r3 + .pool + thumb_func_end SoundMainRAM + + arm_func_start sub_81DD264 +sub_81DD264: + ldr r6, [r4, o_SoundChannel_wav] + ldrb r0, [r4, o_SoundChannel_status] + tst r0, 0x20 + bne _081DD2B4 + orr r0, r0, 0x20 + strb r0, [r4, o_SoundChannel_status] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + beq _081DD29C + ldr r1, [r6, 0xC] + add r1, r1, r6, lsl 1 + add r1, r1, 0x20 + sub r3, r1, r3 + str r3, [r4, o_SoundChannel_cp] +_081DD29C: + ldrh r0, [r6] + cmp r0, 0 + beq _081DD2B4 + sub r3, r3, r6 + sub r3, r3, 0x10 + str r3, [r4, o_SoundChannel_cp] +_081DD2B4: + push {r8,r12,lr} + mov r10, r10, lsl 16 + mov r11, r11, lsl 16 + ldr r1, [r4, o_SoundChannel_freq] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x8 + movne r8, 0x800000 + muleq r8, r12, r1 + ldrh r0, [r6] + cmp r0, 0 + beq _081DD468 + mov r0, 0xFF000000 + str r0, [r4, o_SoundChannel_xpi] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + bne _081DD3C0 + bl sub_81DD520 + mov r0, r1 + add r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD308: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD310: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD370 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD398 + subs lr, lr, 0x1 + bne _081DD358 + add r0, r0, r1 + b _081DD364 +_081DD358: + add r3, r3, lr + bl sub_81DD520 + mov r0, r1 +_081DD364: + add r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD370: + adds r5, r5, 0x40000000 + bcc _081DD310 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD308 + sub r3, r3, 0x1 + b _081DD4F0 +_081DD398: + ldr r0, [sp, 0x1C] + cmp r0, 0 + beq _081DD4F4 + ldr r3, [r4, o_SoundChannel_wav] + ldr r3, [r3, 0x8] + rsb lr, r2, 0 +_081DD3B0: + adds r2, r2, r0 + bgt _081DD358 + sub lr, lr, r0 + b _081DD3B0 +_081DD3C0: + sub r3, r3, 0x1 + bl sub_81DD520 + mov r0, r1 + sub r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD3D8: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD3E0: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD440 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD4F4 + subs lr, lr, 0x1 + bne _081DD428 + add r0, r0, r1 + b _081DD434 +_081DD428: + sub r3, r3, lr + bl sub_81DD520 + mov r0, r1 +_081DD434: + sub r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD440: + adds r5, r5, 0x40000000 + bcc _081DD3E0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD3D8 + add r3, r3, 0x2 + b _081DD4F0 +_081DD468: + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + beq _081DD4F0 + ldrsb r0, [r3, -0x1]! + ldrsb r1, [r3, -0x1] + sub r1, r1, r0 +_081DD480: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD488: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD4CC + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD4F4 + ldrsb r0, [r3, -lr]! + ldrsb r1, [r3, -0x1] + sub r1, r1, r0 +_081DD4CC: + adds r5, r5, 0x40000000 + bcc _081DD488 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD480 + add r3, r3, 0x1 +_081DD4F0: + pop {r8,r12,pc} +_081DD4F4: + mov r2, 0 + strb r2, [r4, o_SoundChannel_status] + mov r0, r5, lsr 30 + bic r5, r5, 0xC0000000 + rsb r0, r0, 0x3 + mov r0, r0, lsl 3 + mov r6, r6, ror r0 + mov r7, r7, ror r0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + pop {r8,r12,pc} + arm_func_end sub_81DD264 + + arm_func_start sub_81DD520 +sub_81DD520: + push {r0,r2,r5-r7,lr} + mov r0, r3, lsr 6 + ldr r1, [r4, o_SoundChannel_xpi] + cmp r0, r1 + beq _081DD594 + str r0, [r4, o_SoundChannel_xpi] + mov r1, 0x21 + mul r2, r1, r0 + ldr r1, [r4, o_SoundChannel_wav] + add r2, r2, r1 + add r2, r2, 0x10 + ldr r5, =gUnknown_030007B8 + ldr r6, =gDeltaEncodingTable + mov r7, 0x40 + ldrb lr, [r2], 1 + strb lr, [r5], 1 + ldrb r1, [r2], 1 + b _081DD57C +_081DD568: + ldrb r1, [r2], 1 + mov r0, r1, lsr 4 + ldrsb r0, [r6, r0] + add lr, lr, r0 + strb lr, [r5], 1 +_081DD57C: + and r0, r1, 0xF + ldrsb r0, [r6, r0] + add lr, lr, r0 + strb lr, [r5], 1 + subs r7, r7, 2 + bgt _081DD568 +_081DD594: + ldr r5, =gUnknown_030007B8 + and r0, r3, 0x3F + ldrsb r1, [r5, r0] + pop {r0,r2,r5-r7,pc} + .pool + arm_func_end sub_81DD520 + + thumb_func_start SoundMainBTM +SoundMainBTM: + mov r12, r4 + movs r1, 0 + movs r2, 0 + movs r3, 0 + movs r4, 0 + stm r0!, {r1-r4} + stm r0!, {r1-r4} + stm r0!, {r1-r4} + stm r0!, {r1-r4} + mov r4, r12 + bx lr + thumb_func_end SoundMainBTM + + thumb_func_start RealClearChain +RealClearChain: + ldr r3, [r0, 0x2C] + cmp r3, 0 + beq _081DD5E2 + ldr r1, [r0, 0x34] + ldr r2, [r0, 0x30] + cmp r2, 0 + beq _081DD5D6 + str r1, [r2, 0x34] + b _081DD5D8 +_081DD5D6: + str r1, [r3, 0x20] +_081DD5D8: + cmp r1, 0 + beq _081DD5DE + str r2, [r1, 0x30] +_081DD5DE: + movs r1, 0 + str r1, [r0, 0x2C] +_081DD5E2: + bx lr + thumb_func_end RealClearChain + + thumb_func_start ply_fine +ply_fine: + push {r4,r5,lr} + adds r5, r1, 0 + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq ply_fine_done +ply_fine_loop: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq ply_fine_ok + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4] +ply_fine_ok: + adds r0, r4, 0 + bl RealClearChain + ldr r4, [r4, 0x34] + cmp r4, 0 + bne ply_fine_loop +ply_fine_done: + movs r0, 0 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end ply_fine + + thumb_func_start MPlayJumpTableCopy +MPlayJumpTableCopy: + mov r12, lr + movs r1, 0x24 + ldr r2, lt_MPlayJumpTableTemplate +MPlayJumpTableCopy_Loop: + ldr r3, [r2] + bl chk_adr_r2 + stm r0!, {r3} + adds r2, 0x4 + subs r1, 0x1 + bgt MPlayJumpTableCopy_Loop + bx r12 + thumb_func_end MPlayJumpTableCopy + + .align 2, 0 + .thumb_func +ldrb_r3_r2: + ldrb r3, [r2] + +@ This attempts to protect against reading anything from the BIOS ROM +@ besides the jump table template. +@ It assumes that the jump table template is located at the end of the ROM. + .thumb_func +chk_adr_r2: + push {r0} + lsrs r0, r2, 25 + bne chk_adr_r2_done @ if adr >= 0x2000000 (i.e. not in BIOS ROM), accept it + ldr r0, lt_MPlayJumpTableTemplate + cmp r2, r0 + blo chk_adr_r2_reject @ if adr < gMPlayJumpTableTemplate, reject it + lsrs r0, r2, 14 + beq chk_adr_r2_done @ if adr < 0x40000 (i.e. in BIOS ROM), accept it +chk_adr_r2_reject: + movs r3, 0 +chk_adr_r2_done: + pop {r0} + bx lr + + .align 2, 0 +lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate + + thumb_func_start ld_r3_tp_adr_i +ld_r3_tp_adr_i: + ldr r2, [r1, 0x40] +_081DD64A: + adds r3, r2, 0x1 + str r3, [r1, 0x40] + ldrb r3, [r2] + b chk_adr_r2 + thumb_func_end ld_r3_tp_adr_i + + thumb_func_start ply_goto +ply_goto: + push {lr} +ply_goto_1: + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r0, [r2, 0x3] + lsls r0, 8 + ldrb r3, [r2, 0x2] + orrs r0, r3 + lsls r0, 8 + ldrb r3, [r2, 0x1] + orrs r0, r3 + lsls r0, 8 + bl ldrb_r3_r2 + orrs r0, r3 + str r0, [r1, o_MusicPlayerTrack_cmdPtr] + pop {r0} + bx r0 + thumb_func_end ply_goto + + thumb_func_start ply_patt +ply_patt: + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + cmp r2, 3 + bhs ply_patt_done + lsls r2, 2 + adds r3, r1, r2 + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + adds r2, 0x4 + str r2, [r3, o_MusicPlayerTrack_patternStack] + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + adds r2, 1 + strb r2, [r1, o_MusicPlayerTrack_patternLevel] + b ply_goto +ply_patt_done: + b ply_fine + thumb_func_end ply_patt + + thumb_func_start ply_pend +ply_pend: + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + cmp r2, 0 + beq ply_pend_done + subs r2, 1 + strb r2, [r1, o_MusicPlayerTrack_patternLevel] + lsls r2, 2 + adds r3, r1, r2 + ldr r2, [r3, o_MusicPlayerTrack_patternStack] + str r2, [r1, o_MusicPlayerTrack_cmdPtr] +ply_pend_done: + bx lr + thumb_func_end ply_pend + + thumb_func_start ply_rept +ply_rept: + push {lr} + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + cmp r3, 0 + bne ply_rept_1 + adds r2, 1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + b ply_goto_1 +ply_rept_1: + ldrb r3, [r1, o_MusicPlayerTrack_repN] + adds r3, 1 + strb r3, [r1, o_MusicPlayerTrack_repN] + mov r12, r3 + bl ld_r3_tp_adr_i + cmp r12, r3 + bhs ply_rept_2 + b ply_goto_1 +ply_rept_2: + movs r3, 0 + strb r3, [r1, o_MusicPlayerTrack_repN] + adds r2, 5 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + pop {r0} + bx r0 + thumb_func_end ply_rept + + thumb_func_start ply_prio +ply_prio: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_priority] + bx r12 + thumb_func_end ply_prio + + thumb_func_start ply_tempo +ply_tempo: + mov r12, lr + bl ld_r3_tp_adr_i + lsls r3, 1 + strh r3, [r0, o_MusicPlayerInfo_tempoD] + ldrh r2, [r0, o_MusicPlayerInfo_tempoU] + muls r3, r2 + lsrs r3, 8 + strh r3, [r0, o_MusicPlayerInfo_tempoI] + bx r12 + thumb_func_end ply_tempo + + thumb_func_start ply_keysh +ply_keysh: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_keyShift] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_keysh + + thumb_func_start ply_voice +ply_voice: + mov r12, lr + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + adds r2, 1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + lsls r2, r3, 1 + adds r2, r3 + lsls r2, 2 + ldr r3, [r0, o_MusicPlayerInfo_tone] + adds r2, r3 + ldr r3, [r2] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_type] + ldr r3, [r2, 0x4] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_wav] + ldr r3, [r2, 0x8] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_attack] + bx r12 + thumb_func_end ply_voice + + thumb_func_start ply_vol +ply_vol: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_vol] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0x3 + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_vol + + thumb_func_start ply_pan +ply_pan: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_pan] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0x3 + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_pan + + thumb_func_start ply_bend +ply_bend: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_bend] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_bend + + thumb_func_start ply_bendr +ply_bendr: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_bendRange] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_bendr + + thumb_func_start ply_lfodl +ply_lfodl: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_lfoDelay] + bx r12 + thumb_func_end ply_lfodl + + thumb_func_start ply_modt +ply_modt: + mov r12, lr + bl ld_r3_tp_adr_i + ldrb r0, [r1, o_MusicPlayerTrack_modT] + cmp r0, r3 + beq _081DD7AA + strb r3, [r1, o_MusicPlayerTrack_modT] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xF + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] +_081DD7AA: + bx r12 + thumb_func_end ply_modt + + thumb_func_start ply_tune +ply_tune: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_tune] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_tune + + thumb_func_start ply_port +ply_port: + mov r12, lr + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + adds r2, 1 + ldr r0, =REG_SOUND1CNT_L @ sound register base address + adds r0, r3 + bl _081DD64A + strb r3, [r0] + bx r12 + .pool + thumb_func_end ply_port + + thumb_func_start m4aSoundVSync +m4aSoundVSync: + ldr r0, lt2_SOUND_INFO_PTR + ldr r0, [r0] + + @ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1. + ldr r2, lt2_ID_NUMBER + ldr r3, [r0, o_SoundInfo_ident] + subs r3, r2 + cmp r3, 1 + bhi m4aSoundVSync_Done + + @ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA. + ldrb r1, [r0, o_SoundInfo_pcmDmaCounter] + subs r1, 1 + strb r1, [r0, o_SoundInfo_pcmDmaCounter] + bgt m4aSoundVSync_Done + + @ Reload the PCM DMA counter. + ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + strb r1, [r0, o_SoundInfo_pcmDmaCounter] + + ldr r2, =REG_DMA1 + + ldr r1, [r2, 0x8] @ DMA1CNT + lsls r1, 7 + bcc m4aSoundVSync_SkipDMA1 @ branch if repeat bit isn't set + + ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 + str r1, [r2, 0x8] @ DMA1CNT + +m4aSoundVSync_SkipDMA1: + ldr r1, [r2, 0xC + 0x8] @ DMA2CNT + lsls r1, 7 + bcc m4aSoundVSync_SkipDMA2 @ branch if repeat bit isn't set + + ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 + str r1, [r2, 0xC + 0x8] @ DMA2CNT + +m4aSoundVSync_SkipDMA2: + + @ turn off DMA1/DMA2 + movs r1, DMA_32BIT >> 8 + lsls r1, 8 + strh r1, [r2, 0xA] @ DMA1CNT_H + strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H + + @ turn on DMA1/DMA2 direct-sound FIFO mode + movs r1, (DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT) >> 8 + lsls r1, 8 @ LSB is 0, so DMA_SRC_INC is used (destination is always fixed in FIFO mode) + strh r1, [r2, 0xA] @ DMA1CNT_H + strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H + +m4aSoundVSync_Done: + bx lr + + .pool + thumb_func_end m4aSoundVSync + + thumb_func_start MPlayMain +MPlayMain: + ldr r2, lt2_ID_NUMBER + ldr r3, [r0, o_MusicPlayerInfo_ident] + cmp r2, r3 + beq _081DD82E + bx lr +_081DD82E: + adds r3, 0x1 + str r3, [r0, o_MusicPlayerInfo_ident] + push {r0,lr} + ldr r3, [r0, o_MusicPlayerInfo_func] + cmp r3, 0 + beq _081DD840 + ldr r0, [r0, o_MusicPlayerInfo_intp] + bl call_r3 +_081DD840: + pop {r0} + push {r4-r7} + mov r4, r8 + mov r5, r9 + mov r6, r10 + mov r7, r11 + push {r4-r7} + adds r7, r0, 0 + ldr r0, [r7, o_MusicPlayerInfo_status] + cmp r0, 0 + bge _081DD858 + b _081DDA6C +_081DD858: + ldr r0, lt2_SOUND_INFO_PTR + ldr r0, [r0] + mov r8, r0 + adds r0, r7, 0 + bl FadeOutBody + ldr r0, [r7, o_MusicPlayerInfo_status] + cmp r0, 0 + bge _081DD86C + b _081DDA6C +_081DD86C: + ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + ldrh r1, [r7, o_MusicPlayerInfo_tempoI] + adds r0, r1 + b _081DD9BC +_081DD874: + ldrb r6, [r7, o_MusicPlayerInfo_trackCount] + ldr r5, [r7, o_MusicPlayerInfo_tracks] + movs r3, 0x1 + movs r4, 0 +_081DD87C: + ldrb r0, [r5] + movs r1, 0x80 + tst r1, r0 + bne _081DD886 + b _081DD998 +_081DD886: + mov r10, r3 + orrs r4, r3 + mov r11, r4 + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq _081DD8BA +_081DD892: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DD8AE + ldrb r0, [r4, 0x10] + cmp r0, 0 + beq _081DD8B4 + subs r0, 0x1 + strb r0, [r4, 0x10] + bne _081DD8B4 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4] + b _081DD8B4 +_081DD8AE: + adds r0, r4, 0 + bl ClearChain +_081DD8B4: + ldr r4, [r4, 0x34] + cmp r4, 0 + bne _081DD892 +_081DD8BA: + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x40 + tst r0, r3 + beq _081DD938 + adds r0, r5, 0 + bl Clear64byte + movs r0, 0x80 + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, o_MusicPlayerTrack_bendRange] + movs r0, 0x40 + strb r0, [r5, o_MusicPlayerTrack_volX] + movs r0, 0x16 + strb r0, [r5, o_MusicPlayerTrack_lfoSpeed] + movs r0, 0x1 + adds r1, r5, 0x6 + strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6] + b _081DD938 +_081DD8E0: + ldr r2, [r5, o_MusicPlayerTrack_cmdPtr] + ldrb r1, [r2] + cmp r1, 0x80 + bhs _081DD8EC + ldrb r1, [r5, o_MusicPlayerTrack_runningStatus] + b _081DD8F6 +_081DD8EC: + adds r2, 0x1 + str r2, [r5, o_MusicPlayerTrack_cmdPtr] + cmp r1, 0xBD + bcc _081DD8F6 + strb r1, [r5, o_MusicPlayerTrack_runningStatus] +_081DD8F6: + cmp r1, 0xCF + bcc _081DD90C + mov r0, r8 + ldr r3, [r0, o_SoundInfo_plynote] + adds r0, r1, 0 + subs r0, 0xCF + adds r1, r7, 0 + adds r2, r5, 0 + bl call_r3 + b _081DD938 +_081DD90C: + cmp r1, 0xB0 + bls _081DD92E + adds r0, r1, 0 + subs r0, 0xB1 + strb r0, [r7, o_MusicPlayerInfo_cmd] + mov r3, r8 + ldr r3, [r3, o_SoundInfo_MPlayJumpTable] + lsls r0, 2 + ldr r3, [r3, r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl call_r3 + ldrb r0, [r5, o_MusicPlayerTrack_flags] + cmp r0, 0 + beq _081DD994 + b _081DD938 +_081DD92E: + ldr r0, lt_gClockTable + subs r1, 0x80 + adds r1, r0 + ldrb r0, [r1] + strb r0, [r5, o_MusicPlayerTrack_wait] +_081DD938: + ldrb r0, [r5, o_MusicPlayerTrack_wait] + cmp r0, 0 + beq _081DD8E0 + subs r0, 0x1 + strb r0, [r5, o_MusicPlayerTrack_wait] + ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed] + cmp r1, 0 + beq _081DD994 + ldrb r0, [r5, o_MusicPlayerTrack_mod] + cmp r0, 0 + beq _081DD994 + ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + cmp r0, 0 + beq _081DD95A + subs r0, 0x1 + strb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + b _081DD994 +_081DD95A: + ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + adds r0, r1 + strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + adds r1, r0, 0 + subs r0, 0x40 + lsls r0, 24 + bpl _081DD96E + lsls r2, r1, 24 + asrs r2, 24 + b _081DD972 +_081DD96E: + movs r0, 0x80 + subs r2, r0, r1 +_081DD972: + ldrb r0, [r5, o_MusicPlayerTrack_mod] + muls r0, r2 + asrs r2, r0, 6 + ldrb r0, [r5, o_MusicPlayerTrack_modM] + eors r0, r2 + lsls r0, 24 + beq _081DD994 + strb r2, [r5, o_MusicPlayerTrack_modM] + ldrb r0, [r5] + ldrb r1, [r5, o_MusicPlayerTrack_modT] + cmp r1, 0 + bne _081DD98E + movs r1, 0xC + b _081DD990 +_081DD98E: + movs r1, 0x3 +_081DD990: + orrs r0, r1 + strb r0, [r5, o_MusicPlayerTrack_flags] +_081DD994: + mov r3, r10 + mov r4, r11 +_081DD998: + subs r6, 0x1 + ble _081DD9A4 + movs r0, 0x50 + adds r5, r0 + lsls r3, 1 + b _081DD87C +_081DD9A4: + ldr r0, [r7, o_MusicPlayerInfo_clock] + adds r0, 0x1 + str r0, [r7, o_MusicPlayerInfo_clock] + cmp r4, 0 + bne _081DD9B6 + movs r0, 0x80 + lsls r0, 24 + str r0, [r7, o_MusicPlayerInfo_status] + b _081DDA6C +_081DD9B6: + str r4, [r7, o_MusicPlayerInfo_status] + ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + subs r0, 0x96 +_081DD9BC: + strh r0, [r7, o_MusicPlayerInfo_tempoC] + cmp r0, 0x96 + bcc _081DD9C4 + b _081DD874 +_081DD9C4: + ldrb r2, [r7, o_MusicPlayerInfo_trackCount] + ldr r5, [r7, o_MusicPlayerInfo_tracks] +_081DD9C8: + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, 0x80 + tst r1, r0 + beq _081DDA62 + movs r1, 0xF + tst r1, r0 + beq _081DDA62 + mov r9, r2 + adds r0, r7, 0 + adds r1, r5, 0 + bl TrkVolPitSet + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq _081DDA58 +_081DD9E6: + ldrb r1, [r4, o_SoundChannel_status] + movs r0, 0xC7 + tst r0, r1 + bne _081DD9F6 + adds r0, r4, 0 + bl ClearChain + b _081DDA52 +_081DD9F6: + ldrb r0, [r4, o_SoundChannel_type] + movs r6, 0x7 + ands r6, r0 + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x3 + tst r0, r3 + beq _081DDA14 + bl ChnVolSetAsm + cmp r6, 0 + beq _081DDA14 + ldrb r0, [r4, o_CgbChannel_mo] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, o_CgbChannel_mo] +_081DDA14: + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0xC + tst r0, r3 + beq _081DDA52 + ldrb r1, [r4, o_SoundChannel_ky] + movs r0, 0x8 + ldrsb r0, [r5, r0] + adds r2, r1, r0 + bpl _081DDA28 + movs r2, 0 +_081DDA28: + cmp r6, 0 + beq _081DDA46 + mov r0, r8 + ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq] + adds r1, r2, 0 + ldrb r2, [r5, o_MusicPlayerTrack_pitM] + adds r0, r6, 0 + bl call_r3 + str r0, [r4, o_CgbChannel_fr] + ldrb r0, [r4, o_CgbChannel_mo] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, o_CgbChannel_mo] + b _081DDA52 +_081DDA46: + adds r1, r2, 0 + ldrb r2, [r5, o_MusicPlayerTrack_pitM] + ldr r0, [r4, o_SoundChannel_wav] + bl MidiKeyToFreq + str r0, [r4, o_SoundChannel_freq] +_081DDA52: + ldr r4, [r4, o_SoundChannel_np] + cmp r4, 0 + bne _081DD9E6 +_081DDA58: + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, 0xF0 + ands r0, r1 + strb r0, [r5, o_MusicPlayerTrack_flags] + mov r2, r9 +_081DDA62: + subs r2, 0x1 + ble _081DDA6C + movs r0, 0x50 + adds r5, r0 + bgt _081DD9C8 +_081DDA6C: + ldr r0, lt2_ID_NUMBER + str r0, [r7, o_MusicPlayerInfo_ident] + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r3} + +call_r3: + bx r3 + + .align 2, 0 +lt_gClockTable: .word gClockTable +lt2_SOUND_INFO_PTR: .word SOUND_INFO_PTR +lt2_ID_NUMBER: .word ID_NUMBER + thumb_func_end MPlayMain + + thumb_func_start TrackStop +TrackStop: + push {r4-r6,lr} + adds r5, r1, 0 + ldrb r1, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x80 + tst r0, r1 + beq TrackStop_Done + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq TrackStop_3 + movs r6, 0 +TrackStop_Loop: + ldrb r0, [r4, o_SoundChannel_status] + cmp r0, 0 + beq TrackStop_2 + ldrb r0, [r4, o_SoundChannel_type] + movs r3, 0x7 + ands r0, r3 + beq TrackStop_1 + ldr r3, =SOUND_INFO_PTR + ldr r3, [r3] + ldr r3, [r3, o_SoundInfo_CgbOscOff] + bl call_r3 +TrackStop_1: + strb r6, [r4, o_SoundChannel_status] +TrackStop_2: + str r6, [r4, o_SoundChannel_track] + ldr r4, [r4, o_SoundChannel_np] + cmp r4, 0 + bne TrackStop_Loop +TrackStop_3: + str r4, [r5, o_MusicPlayerTrack_chan] +TrackStop_Done: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end TrackStop + + thumb_func_start ChnVolSetAsm +ChnVolSetAsm: + ldrb r1, [r4, 0x12] + movs r0, 0x14 + ldrsb r2, [r4, r0] + movs r3, 0x80 + adds r3, r2 + muls r3, r1 + ldrb r0, [r5, 0x10] + muls r0, r3 + asrs r0, 14 + cmp r0, 0xFF + bls _081DDAE8 + movs r0, 0xFF +_081DDAE8: + strb r0, [r4, 0x2] + movs r3, 0x7F + subs r3, r2 + muls r3, r1 + ldrb r0, [r5, 0x11] + muls r0, r3 + asrs r0, 14 + cmp r0, 0xFF + bls _081DDAFC + movs r0, 0xFF +_081DDAFC: + strb r0, [r4, 0x3] + bx lr + thumb_func_end ChnVolSetAsm + + thumb_func_start ply_note +ply_note: + push {r4-r7,lr} + mov r4, r8 + mov r5, r9 + mov r6, r10 + mov r7, r11 + push {r4-r7} + sub sp, 0x18 + str r1, [sp] + adds r5, r2, 0 + ldr r1, =SOUND_INFO_PTR + ldr r1, [r1] + str r1, [sp, 0x4] + ldr r1, =gClockTable + adds r0, r1 + ldrb r0, [r0] + strb r0, [r5, o_MusicPlayerTrack_gateTime] + ldr r3, [r5, o_MusicPlayerTrack_cmdPtr] + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB46 + strb r0, [r5, o_MusicPlayerTrack_key] + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB44 + strb r0, [r5, o_MusicPlayerTrack_velocity] + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB44 + ldrb r1, [r5, o_MusicPlayerTrack_gateTime] + adds r1, r0 + strb r1, [r5, o_MusicPlayerTrack_gateTime] + adds r3, 0x1 +_081DDB44: + str r3, [r5, o_MusicPlayerTrack_cmdPtr] +_081DDB46: + movs r0, 0 + str r0, [sp, 0x14] + adds r4, r5, 0 + adds r4, o_MusicPlayerTrack_ToneData_type + ldrb r2, [r4] + movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL + tst r0, r2 + beq _081DDB98 + ldrb r3, [r5, o_MusicPlayerTrack_key] + movs r0, TONEDATA_TYPE_SPL + tst r0, r2 + beq _081DDB66 + ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable] + adds r1, r3 + ldrb r0, [r1] + b _081DDB68 +_081DDB66: + adds r0, r3, 0 +_081DDB68: + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav] + adds r1, r0 + mov r9, r1 + mov r6, r9 + ldrb r1, [r6] + movs r0, 0xC0 + tst r0, r1 + beq _081DDB80 + b _081DDCEA +_081DDB80: + movs r0, 0x80 + tst r0, r2 + beq _081DDB9C + ldrb r1, [r6, 0x3] + movs r0, 0x80 + tst r0, r1 + beq _081DDB94 + subs r1, 0xC0 + lsls r1, 1 + str r1, [sp, 0x14] +_081DDB94: + ldrb r3, [r6, 0x1] + b _081DDB9C +_081DDB98: + mov r9, r4 + ldrb r3, [r5, 0x5] +_081DDB9C: + str r3, [sp, 0x8] + ldr r6, [sp] + ldrb r1, [r6, 0x9] + ldrb r0, [r5, 0x1D] + adds r0, r1 + cmp r0, 0xFF + bls _081DDBAC + movs r0, 0xFF +_081DDBAC: + str r0, [sp, 0x10] + mov r6, r9 + ldrb r0, [r6] + movs r6, 0x7 + ands r6, r0 + str r6, [sp, 0xC] + beq _081DDBEC + ldr r0, [sp, 0x4] + ldr r4, [r0, 0x1C] + cmp r4, 0 + bne _081DDBC4 + b _081DDCEA +_081DDBC4: + subs r6, 0x1 + lsls r0, r6, 6 + adds r4, r0 + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DDC40 + movs r0, 0x40 + tst r0, r1 + bne _081DDC40 + ldrb r1, [r4, 0x13] + ldr r0, [sp, 0x10] + cmp r1, r0 + bcc _081DDC40 + beq _081DDBE4 + b _081DDCEA +_081DDBE4: + ldr r0, [r4, 0x2C] + cmp r0, r5 + bcs _081DDC40 + b _081DDCEA +_081DDBEC: + ldr r6, [sp, 0x10] + adds r7, r5, 0 + movs r2, 0 + mov r8, r2 + ldr r4, [sp, 0x4] + ldrb r3, [r4, 0x6] + adds r4, 0x50 +_081DDBFA: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DDC40 + movs r0, 0x40 + tst r0, r1 + beq _081DDC14 + cmp r2, 0 + bne _081DDC18 + adds r2, 0x1 + ldrb r6, [r4, 0x13] + ldr r7, [r4, 0x2C] + b _081DDC32 +_081DDC14: + cmp r2, 0 + bne _081DDC34 +_081DDC18: + ldrb r0, [r4, 0x13] + cmp r0, r6 + bcs _081DDC24 + adds r6, r0, 0 + ldr r7, [r4, 0x2C] + b _081DDC32 +_081DDC24: + bhi _081DDC34 + ldr r0, [r4, 0x2C] + cmp r0, r7 + bls _081DDC30 + adds r7, r0, 0 + b _081DDC32 +_081DDC30: + bcc _081DDC34 +_081DDC32: + mov r8, r4 +_081DDC34: + adds r4, 0x40 + subs r3, 0x1 + bgt _081DDBFA + mov r4, r8 + cmp r4, 0 + beq _081DDCEA +_081DDC40: + adds r0, r4, 0 + bl ClearChain + movs r1, 0 + str r1, [r4, 0x30] + ldr r3, [r5, 0x20] + str r3, [r4, 0x34] + cmp r3, 0 + beq _081DDC54 + str r4, [r3, 0x30] +_081DDC54: + str r4, [r5, 0x20] + str r5, [r4, 0x2C] + ldrb r0, [r5, 0x1B] + strb r0, [r5, 0x1C] + cmp r0, r1 + beq _081DDC66 + adds r1, r5, 0 + bl clear_modM +_081DDC66: + ldr r0, [sp] + adds r1, r5, 0 + bl TrkVolPitSet + ldr r0, [r5, 0x4] + str r0, [r4, 0x10] + ldr r0, [sp, 0x10] + strb r0, [r4, 0x13] + ldr r0, [sp, 0x8] + strb r0, [r4, 0x8] + ldr r0, [sp, 0x14] + strb r0, [r4, 0x14] + mov r6, r9 + ldrb r0, [r6] + strb r0, [r4, 0x1] + ldr r7, [r6, 0x4] + str r7, [r4, 0x24] + ldr r0, [r6, 0x8] + str r0, [r4, 0x4] + ldrh r0, [r5, 0x1E] + strh r0, [r4, 0xC] + bl ChnVolSetAsm + ldrb r1, [r4, 0x8] + movs r0, 0x8 + ldrsb r0, [r5, r0] + adds r3, r1, r0 + bpl _081DDCA0 + movs r3, 0 +_081DDCA0: + ldr r6, [sp, 0xC] + cmp r6, 0 + beq _081DDCCE + mov r6, r9 + ldrb r0, [r6, 0x2] + strb r0, [r4, 0x1E] + ldrb r1, [r6, 0x3] + movs r0, 0x80 + tst r0, r1 + bne _081DDCBA + movs r0, 0x70 + tst r0, r1 + bne _081DDCBC +_081DDCBA: + movs r1, 0x8 +_081DDCBC: + strb r1, [r4, 0x1F] + ldrb r2, [r5, 0x9] + adds r1, r3, 0 + ldr r0, [sp, 0xC] + ldr r3, [sp, 0x4] + ldr r3, [r3, 0x30] + bl call_r3 + b _081DDCDC +_081DDCCE: + ldr r0, [r5, o_MusicPlayerTrack_unk_3C] + str r0, [r4, 0x18] + ldrb r2, [r5, 0x9] + adds r1, r3, 0 + adds r0, r7, 0 + bl MidiKeyToFreq +_081DDCDC: + str r0, [r4, 0x20] + movs r0, 0x80 + strb r0, [r4] + ldrb r1, [r5] + movs r0, 0xF0 + ands r0, r1 + strb r0, [r5] +_081DDCEA: + add sp, 0x18 + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r0} + bx r0 + .pool + thumb_func_end ply_note + + thumb_func_start ply_endtie +ply_endtie: + push {r4,r5} + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + cmp r3, 0x80 + bhs _081DDD16 + strb r3, [r1, o_MusicPlayerTrack_key] + adds r2, 0x1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + b _081DDD18 +_081DDD16: + ldrb r3, [r1, o_MusicPlayerTrack_key] +_081DDD18: + ldr r1, [r1, o_MusicPlayerTrack_chan] + cmp r1, 0 + beq _081DDD40 + movs r4, 0x83 + movs r5, 0x40 +_081DDD22: + ldrb r2, [r1, o_SoundChannel_status] + tst r2, r4 + beq _081DDD3A + tst r2, r5 + bne _081DDD3A + ldrb r0, [r1, o_SoundChannel_mk] + cmp r0, r3 + bne _081DDD3A + movs r0, 0x40 + orrs r2, r0 + strb r2, [r1, o_SoundChannel_status] + b _081DDD40 +_081DDD3A: + ldr r1, [r1, o_SoundChannel_np] + cmp r1, 0 + bne _081DDD22 +_081DDD40: + pop {r4,r5} + bx lr + thumb_func_end ply_endtie + + thumb_func_start clear_modM +clear_modM: + movs r2, 0 + strb r2, [r1, o_MusicPlayerTrack_modM] + strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC] + ldrb r2, [r1, o_MusicPlayerTrack_modT] + cmp r2, 0 + bne _081DDD54 + movs r2, 0xC + b _081DDD56 +_081DDD54: + movs r2, 0x3 +_081DDD56: + ldrb r3, [r1, o_MusicPlayerTrack_flags] + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx lr + thumb_func_end clear_modM + + thumb_func_start ld_r3_tp_adr_i +ld_r3_tp_adr_i_unchecked: + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + adds r3, r2, 1 + str r3, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + bx lr + thumb_func_end ld_r3_tp_adr_i + + thumb_func_start ply_lfos +ply_lfos: + mov r12, lr + bl ld_r3_tp_adr_i_unchecked + strb r3, [r1, o_MusicPlayerTrack_lfoSpeed] + cmp r3, 0 + bne _081DDD7C + bl clear_modM +_081DDD7C: + bx r12 + thumb_func_end ply_lfos + + thumb_func_start ply_mod +ply_mod: + mov r12, lr + bl ld_r3_tp_adr_i_unchecked + strb r3, [r1, o_MusicPlayerTrack_mod] + cmp r3, 0 + bne _081DDD90 + bl clear_modM +_081DDD90: + bx r12 + thumb_func_end ply_mod + + .align 2, 0 @ Don't pad with nop. diff --git a/sym_bss.txt b/sym_bss.txt index d2d218ec4..531a700e9 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -34,7 +34,7 @@ .include "src/field/field_specials.o" .include "src/pokemon/learn_move.o" .include "src/field/player_pc.o" - .include "asm/m4a_1.o" + .include "src/libs/m4a_1.o" .include "src/libs/agb_flash.o" .include "src/libs/siirtc.o" .include "tools/agbcc/lib/libgcc.a:dp-bit.o" diff --git a/tilesets.mk b/tilesets.mk index 9bb9a1f3d..ae0e57c9b 100644 --- a/tilesets.mk +++ b/tilesets.mk @@ -1,185 +1,89 @@ TILESETDIR := data/tilesets -$(TILESETDIR)/secondary/petalburg/tiles.4bpp: $(TILESETDIR)/secondary/petalburg/tiles.png - $(GFX) $< $@ -num_tiles 159 - -$(TILESETDIR)/secondary/rustboro/tiles.4bpp: $(TILESETDIR)/secondary/rustboro/tiles.png - $(GFX) $< $@ -num_tiles 498 - -$(TILESETDIR)/secondary/dewford/tiles.4bpp: $(TILESETDIR)/secondary/dewford/tiles.png - $(GFX) $< $@ -num_tiles 343 - -$(TILESETDIR)/secondary/slateport/tiles.4bpp: $(TILESETDIR)/secondary/slateport/tiles.png - $(GFX) $< $@ -num_tiles 504 - -$(TILESETDIR)/secondary/mauville/tiles.4bpp: $(TILESETDIR)/secondary/mauville/tiles.png - $(GFX) $< $@ -num_tiles 450 - -$(TILESETDIR)/secondary/lavaridge/tiles.4bpp: $(TILESETDIR)/secondary/lavaridge/tiles.png - $(GFX) $< $@ -num_tiles 348 - -$(TILESETDIR)/secondary/fallarbor/tiles.4bpp: $(TILESETDIR)/secondary/fallarbor/tiles.png - $(GFX) $< $@ -num_tiles 374 - -$(TILESETDIR)/secondary/fortree/tiles.4bpp: $(TILESETDIR)/secondary/fortree/tiles.png - $(GFX) $< $@ -num_tiles 493 - -$(TILESETDIR)/secondary/mossdeep/tiles.4bpp: $(TILESETDIR)/secondary/mossdeep/tiles.png - $(GFX) $< $@ -num_tiles 499 - -$(TILESETDIR)/secondary/pacifidlog/tiles.4bpp: $(TILESETDIR)/secondary/pacifidlog/tiles.png - $(GFX) $< $@ -num_tiles 504 - -$(TILESETDIR)/secondary/sootopolis/tiles.4bpp: $(TILESETDIR)/secondary/sootopolis/tiles.png - $(GFX) $< $@ -num_tiles 180 - -$(TILESETDIR)/primary/building/tiles.4bpp: $(TILESETDIR)/primary/building/tiles.png - $(GFX) $< $@ -num_tiles 502 - -$(TILESETDIR)/secondary/shop/tiles.4bpp: $(TILESETDIR)/secondary/shop/tiles.png - $(GFX) $< $@ -num_tiles 502 - -$(TILESETDIR)/secondary/pokemon_center/tiles.4bpp: $(TILESETDIR)/secondary/pokemon_center/tiles.png - $(GFX) $< $@ -num_tiles 478 - -$(TILESETDIR)/secondary/cave/tiles.4bpp: $(TILESETDIR)/secondary/cave/tiles.png - $(GFX) $< $@ -num_tiles 420 - -$(TILESETDIR)/secondary/pokemon_school/tiles.4bpp: $(TILESETDIR)/secondary/pokemon_school/tiles.png - $(GFX) $< $@ -num_tiles 278 - -$(TILESETDIR)/secondary/pokemon_fan_club/tiles.4bpp: $(TILESETDIR)/secondary/pokemon_fan_club/tiles.png - $(GFX) $< $@ -num_tiles 319 - -$(TILESETDIR)/secondary/unused_1/tiles.4bpp: $(TILESETDIR)/secondary/unused_1/tiles.png - $(GFX) $< $@ -num_tiles 17 - -$(TILESETDIR)/secondary/meteor_falls/tiles.4bpp: $(TILESETDIR)/secondary/meteor_falls/tiles.png - $(GFX) $< $@ -num_tiles 422 - -$(TILESETDIR)/secondary/oceanic_museum/tiles.4bpp: $(TILESETDIR)/secondary/oceanic_museum/tiles.png - $(GFX) $< $@ -num_tiles 319 - -$(TILESETDIR)/secondary/cable_club/unknown_tiles.4bpp: $(TILESETDIR)/secondary/cable_club/unknown_tiles.png - $(GFX) $< $@ -num_tiles 120 - -$(TILESETDIR)/secondary/seashore_house/tiles.4bpp: $(TILESETDIR)/secondary/seashore_house/tiles.png - $(GFX) $< $@ -num_tiles 312 - -$(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.4bpp: $(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.png - $(GFX) $< $@ -num_tiles 345 - -$(TILESETDIR)/secondary/pokemon_day_care/tiles.4bpp: $(TILESETDIR)/secondary/pokemon_day_care/tiles.png - $(GFX) $< $@ -num_tiles 355 - -$(TILESETDIR)/secondary/facility/tiles.4bpp: $(TILESETDIR)/secondary/facility/tiles.png - $(GFX) $< $@ -num_tiles 503 - -$(TILESETDIR)/secondary/secret_base/brown_cave/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/brown_cave/tiles.png - $(GFX) $< $@ -num_tiles 83 - -$(TILESETDIR)/secondary/secret_base/tree/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/tree/tiles.png - $(GFX) $< $@ -num_tiles 83 - -$(TILESETDIR)/secondary/secret_base/shrub/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/shrub/tiles.png - $(GFX) $< $@ -num_tiles 83 - -$(TILESETDIR)/secondary/secret_base/blue_cave/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/blue_cave/tiles.png - $(GFX) $< $@ -num_tiles 83 - -$(TILESETDIR)/secondary/secret_base/yellow_cave/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/yellow_cave/tiles.png - $(GFX) $< $@ -num_tiles 83 - -$(TILESETDIR)/secondary/secret_base/red_cave/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/red_cave/tiles.png - $(GFX) $< $@ -num_tiles 83 - -$(TILESETDIR)/secondary/inside_of_truck/tiles.4bpp: $(TILESETDIR)/secondary/inside_of_truck/tiles.png - $(GFX) $< $@ -num_tiles 62 - -$(TILESETDIR)/secondary/contest/tiles.4bpp: $(TILESETDIR)/secondary/contest/tiles.png - $(GFX) $< $@ -num_tiles 430 - -$(TILESETDIR)/secondary/lilycove_museum/tiles.4bpp: $(TILESETDIR)/secondary/lilycove_museum/tiles.png - $(GFX) $< $@ -num_tiles 431 - -$(TILESETDIR)/secondary/lab/tiles.4bpp: $(TILESETDIR)/secondary/lab/tiles.png - $(GFX) $< $@ -num_tiles 500 - -$(TILESETDIR)/secondary/underwater/tiles.4bpp: $(TILESETDIR)/secondary/underwater/tiles.png - $(GFX) $< $@ -num_tiles 500 - -$(TILESETDIR)/secondary/generic_building/tiles.4bpp: $(TILESETDIR)/secondary/generic_building/tiles.png - $(GFX) $< $@ -num_tiles 509 - -$(TILESETDIR)/secondary/mauville_game_corner/tiles.4bpp: $(TILESETDIR)/secondary/mauville_game_corner/tiles.png - $(GFX) $< $@ -num_tiles 469 - -$(TILESETDIR)/secondary/unused_2/tiles.4bpp: $(TILESETDIR)/secondary/unused_2/tiles.png - $(GFX) $< $@ -num_tiles 150 - -$(TILESETDIR)/secondary/rustboro_gym/tiles.4bpp: $(TILESETDIR)/secondary/rustboro_gym/tiles.png - $(GFX) $< $@ -num_tiles 94 - -$(TILESETDIR)/secondary/dewford_gym/tiles.4bpp: $(TILESETDIR)/secondary/dewford_gym/tiles.png - $(GFX) $< $@ -num_tiles 88 - -$(TILESETDIR)/secondary/lavaridge_gym/tiles.4bpp: $(TILESETDIR)/secondary/lavaridge_gym/tiles.png - $(GFX) $< $@ -num_tiles 70 - -$(TILESETDIR)/secondary/fortree_gym/tiles.4bpp: $(TILESETDIR)/secondary/fortree_gym/tiles.png - $(GFX) $< $@ -num_tiles 84 - -$(TILESETDIR)/secondary/mossdeep_gym/tiles.4bpp: $(TILESETDIR)/secondary/mossdeep_gym/tiles.png - $(GFX) $< $@ -num_tiles 122 - -$(TILESETDIR)/secondary/sootopolis_gym/tiles.4bpp: $(TILESETDIR)/secondary/sootopolis_gym/tiles.png - $(GFX) $< $@ -num_tiles 484 - -$(TILESETDIR)/secondary/trick_house_puzzle/tiles.4bpp: $(TILESETDIR)/secondary/trick_house_puzzle/tiles.png - $(GFX) $< $@ -num_tiles 255 - -$(TILESETDIR)/secondary/ship/tiles.4bpp: $(TILESETDIR)/secondary/ship/tiles.png - $(GFX) $< $@ -num_tiles 342 - -$(TILESETDIR)/secondary/elite_four/tiles.4bpp: $(TILESETDIR)/secondary/elite_four/tiles.png - $(GFX) $< $@ -num_tiles 505 +$(TILESETDIR)/secondary/petalburg/tiles.4bpp: GFX_OPTS := -num_tiles 159 +$(TILESETDIR)/secondary/rustboro/tiles.4bpp: GFX_OPTS := -num_tiles 498 +$(TILESETDIR)/secondary/dewford/tiles.4bpp: GFX_OPTS := -num_tiles 343 +$(TILESETDIR)/secondary/slateport/tiles.4bpp: GFX_OPTS := -num_tiles 504 +$(TILESETDIR)/secondary/mauville/tiles.4bpp: GFX_OPTS := -num_tiles 450 +$(TILESETDIR)/secondary/lavaridge/tiles.4bpp: GFX_OPTS := -num_tiles 348 +$(TILESETDIR)/secondary/fallarbor/tiles.4bpp: GFX_OPTS := -num_tiles 374 +$(TILESETDIR)/secondary/fortree/tiles.4bpp: GFX_OPTS := -num_tiles 493 +$(TILESETDIR)/secondary/mossdeep/tiles.4bpp: GFX_OPTS := -num_tiles 499 +$(TILESETDIR)/secondary/pacifidlog/tiles.4bpp: GFX_OPTS := -num_tiles 504 +$(TILESETDIR)/secondary/sootopolis/tiles.4bpp: GFX_OPTS := -num_tiles 180 +$(TILESETDIR)/primary/building/tiles.4bpp: GFX_OPTS := -num_tiles 502 +$(TILESETDIR)/secondary/shop/tiles.4bpp: GFX_OPTS := -num_tiles 502 +$(TILESETDIR)/secondary/pokemon_center/tiles.4bpp: GFX_OPTS := -num_tiles 478 +$(TILESETDIR)/secondary/cave/tiles.4bpp: GFX_OPTS := -num_tiles 420 +$(TILESETDIR)/secondary/pokemon_school/tiles.4bpp: GFX_OPTS := -num_tiles 278 +$(TILESETDIR)/secondary/pokemon_fan_club/tiles.4bpp: GFX_OPTS := -num_tiles 319 +$(TILESETDIR)/secondary/unused_1/tiles.4bpp: GFX_OPTS := -num_tiles 17 +$(TILESETDIR)/secondary/meteor_falls/tiles.4bpp: GFX_OPTS := -num_tiles 422 +$(TILESETDIR)/secondary/oceanic_museum/tiles.4bpp: GFX_OPTS := -num_tiles 319 +$(TILESETDIR)/secondary/cable_club/unknown_tiles.4bpp: GFX_OPTS := -num_tiles 120 +$(TILESETDIR)/secondary/seashore_house/tiles.4bpp: GFX_OPTS := -num_tiles 312 +$(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.4bpp: GFX_OPTS := -num_tiles 345 +$(TILESETDIR)/secondary/pokemon_day_care/tiles.4bpp: GFX_OPTS := -num_tiles 355 +$(TILESETDIR)/secondary/facility/tiles.4bpp: GFX_OPTS := -num_tiles 503 +$(TILESETDIR)/secondary/secret_base/brown_cave/tiles.4bpp: GFX_OPTS := -num_tiles 83 +$(TILESETDIR)/secondary/secret_base/tree/tiles.4bpp: GFX_OPTS := -num_tiles 83 +$(TILESETDIR)/secondary/secret_base/shrub/tiles.4bpp: GFX_OPTS := -num_tiles 83 +$(TILESETDIR)/secondary/secret_base/blue_cave/tiles.4bpp: GFX_OPTS := -num_tiles 83 +$(TILESETDIR)/secondary/secret_base/yellow_cave/tiles.4bpp: GFX_OPTS := -num_tiles 83 +$(TILESETDIR)/secondary/secret_base/red_cave/tiles.4bpp: GFX_OPTS := -num_tiles 83 +$(TILESETDIR)/secondary/inside_of_truck/tiles.4bpp: GFX_OPTS := -num_tiles 62 +$(TILESETDIR)/secondary/contest/tiles.4bpp: GFX_OPTS := -num_tiles 430 +$(TILESETDIR)/secondary/lilycove_museum/tiles.4bpp: GFX_OPTS := -num_tiles 431 +$(TILESETDIR)/secondary/lab/tiles.4bpp: GFX_OPTS := -num_tiles 500 +$(TILESETDIR)/secondary/underwater/tiles.4bpp: GFX_OPTS := -num_tiles 500 +$(TILESETDIR)/secondary/generic_building/tiles.4bpp: GFX_OPTS := -num_tiles 509 +$(TILESETDIR)/secondary/mauville_game_corner/tiles.4bpp: GFX_OPTS := -num_tiles 469 +$(TILESETDIR)/secondary/unused_2/tiles.4bpp: GFX_OPTS := -num_tiles 150 +$(TILESETDIR)/secondary/rustboro_gym/tiles.4bpp: GFX_OPTS := -num_tiles 94 +$(TILESETDIR)/secondary/dewford_gym/tiles.4bpp: GFX_OPTS := -num_tiles 88 +$(TILESETDIR)/secondary/lavaridge_gym/tiles.4bpp: GFX_OPTS := -num_tiles 70 +$(TILESETDIR)/secondary/fortree_gym/tiles.4bpp: GFX_OPTS := -num_tiles 84 +$(TILESETDIR)/secondary/mossdeep_gym/tiles.4bpp: GFX_OPTS := -num_tiles 122 +$(TILESETDIR)/secondary/sootopolis_gym/tiles.4bpp: GFX_OPTS := -num_tiles 484 +$(TILESETDIR)/secondary/trick_house_puzzle/tiles.4bpp: GFX_OPTS := -num_tiles 255 +$(TILESETDIR)/secondary/ship/tiles.4bpp: GFX_OPTS := -num_tiles 342 +$(TILESETDIR)/secondary/elite_four/tiles.4bpp: GFX_OPTS := -num_tiles 505 # reproduce overflow quirk - $(TILESETDIR)/secondary/pokemon_school/tiles.4bpp.lz: $(TILESETDIR)/secondary/pokemon_school/tiles.4bpp - $(GFX) $< $@ -overflow 10 + $(GBAGFX) $< $@ -overflow 10 $(TILESETDIR)/secondary/pokemon_fan_club/tiles.4bpp.lz: $(TILESETDIR)/secondary/pokemon_fan_club/tiles.4bpp - $(GFX) $< $@ -overflow 12 + $(GBAGFX) $< $@ -overflow 12 $(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.4bpp.lz: $(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.4bpp - $(GFX) $< $@ -overflow 8 + $(GBAGFX) $< $@ -overflow 8 $(TILESETDIR)/secondary/pokemon_day_care/tiles.4bpp.lz: $(TILESETDIR)/secondary/pokemon_day_care/tiles.4bpp - $(GFX) $< $@ -overflow 14 + $(GBAGFX) $< $@ -overflow 14 $(TILESETDIR)/secondary/inside_of_truck/tiles.4bpp.lz: $(TILESETDIR)/secondary/inside_of_truck/tiles.4bpp - $(GFX) $< $@ -overflow 10 + $(GBAGFX) $< $@ -overflow 10 $(TILESETDIR)/secondary/battle_tower/tiles.4bpp.lz: $(TILESETDIR)/secondary/battle_tower/tiles.4bpp - $(GFX) $< $@ -overflow 16 + $(GBAGFX) $< $@ -overflow 16 # unused copies of secret base tiles $(TILESETDIR)/secondary/secret_base/brown_cave/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/brown_cave/tiles.png - $(GFX) $< $@ -num_tiles 82 + $(GBAGFX) $< $@ -num_tiles 82 $(TILESETDIR)/secondary/secret_base/tree/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/tree/tiles.png - $(GFX) $< $@ -num_tiles 82 + $(GBAGFX) $< $@ -num_tiles 82 $(TILESETDIR)/secondary/secret_base/shrub/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/shrub/tiles.png - $(GFX) $< $@ -num_tiles 82 + $(GBAGFX) $< $@ -num_tiles 82 $(TILESETDIR)/secondary/secret_base/blue_cave/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/blue_cave/tiles.png - $(GFX) $< $@ -num_tiles 82 + $(GBAGFX) $< $@ -num_tiles 82 $(TILESETDIR)/secondary/secret_base/yellow_cave/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/yellow_cave/tiles.png - $(GFX) $< $@ -num_tiles 82 + $(GBAGFX) $< $@ -num_tiles 82 $(TILESETDIR)/secondary/secret_base/red_cave/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/red_cave/tiles.png - $(GFX) $< $@ -num_tiles 82 + $(GBAGFX) $< $@ -num_tiles 82 -- cgit v1.2.3 From 31949ea73cf2820cc180aded7b6543b618999025 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 23:27:54 -0600 Subject: override-de.mk: GFX -> GBAGFX --- override-de.mk | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/override-de.mk b/override-de.mk index 02861fc6a..64a139efb 100644 --- a/override-de.mk +++ b/override-de.mk @@ -6,15 +6,15 @@ INTROGFXDIR := graphics/intro MISCGFXDIR := graphics/misc $(MENUGFXDIR)/wordgroup_frame.4bpp: $(MENUGFXDIR)/wordgroup_frame.png - $(GFX) $< $@ -num_tiles 76 + $(GBAGFX) $< $@ -num_tiles 76 $(MENUGFXDIR)/check_berry.4bpp: $(MENUGFXDIR)/check_berry.png - $(GFX) $< $@ -num_tiles 97 + $(GBAGFX) $< $@ -num_tiles 97 $(INTROGFXDIR)/copyright.4bpp: $(INTROGFXDIR)/copyright.png - $(GFX) $< $@ -num_tiles 47 + $(GBAGFX) $< $@ -num_tiles 47 $(MISCGFXDIR)/end_copyright.4bpp: $(MISCGFXDIR)/end_copyright.png - $(GFX) $< $@ -num_tiles 92 + $(GBAGFX) $< $@ -num_tiles 92 # # tilesets.mk @@ -22,4 +22,4 @@ $(MISCGFXDIR)/end_copyright.4bpp: $(MISCGFXDIR)/end_copyright.png TILESETDIR := data/tilesets $(TILESETDIR)/secondary/shop/tiles.4bpp: $(TILESETDIR)/secondary/shop/tiles.png - $(GFX) $< $@ -num_tiles 503 + $(GBAGFX) $< $@ -num_tiles 503 -- cgit v1.2.3 From 5f9e2256801d56094c7b0e4b096797268f415b03 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 23:57:23 -0600 Subject: use .SECONDARY to prevent intermediate files from being deleted --- Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1fb17dc02..cb4aeb46c 100644 --- a/Makefile +++ b/Makefile @@ -78,12 +78,10 @@ endif # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: - # Clear the default suffixes .SUFFIXES: - # Don't delete intermediate files -.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl %.pcm %.bin sound/direct_sound_samples/cry_%.bin +.SECONDARY: # Create build subdirectories $(shell mkdir -p $(addprefix $(BUILD_DIR)/, $(SUBDIRS))) -- cgit v1.2.3 From bde368e439b3a279df18efcf563ec908f3e84330 Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Thu, 11 Jan 2018 11:41:33 -0500 Subject: finish splitting and decompiling dragon.s --- asm/dragon.s | 387 ----------------------------------------------- ld_script.txt | 2 +- src/battle/anim/dark.c | 138 +++++++++++++++++ src/battle/anim/dragon.c | 42 +++-- 4 files changed, 167 insertions(+), 402 deletions(-) delete mode 100755 asm/dragon.s create mode 100755 src/battle/anim/dark.c diff --git a/asm/dragon.s b/asm/dragon.s deleted file mode 100755 index eb372ec80..000000000 --- a/asm/dragon.s +++ /dev/null @@ -1,387 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ dragon - - thumb_func_start sub_80DFC24 -sub_80DFC24: @ 80DFC24 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080DFC58 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DFC5C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r1, 0x8] - ldr r0, _080DFC60 @ =gAnimBankAttacker - ldrb r0, [r0] - movs r2, 0x10 - strh r2, [r1, 0xA] - ldr r1, _080DFC64 @ =REG_BLDALPHA - strh r2, [r1] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFC70 - ldr r1, _080DFC68 @ =REG_BLDCNT - ldr r2, _080DFC6C @ =0x00003f42 - b _080DFC74 - .align 2, 0 -_080DFC58: .4byte gTasks -_080DFC5C: .4byte gBattleAnimArgs -_080DFC60: .4byte gAnimBankAttacker -_080DFC64: .4byte REG_BLDALPHA -_080DFC68: .4byte REG_BLDCNT -_080DFC6C: .4byte 0x00003f42 -_080DFC70: - ldr r1, _080DFC8C @ =REG_BLDCNT - ldr r2, _080DFC90 @ =0x00003f44 -_080DFC74: - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080DFC94 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080DFC98 @ =sub_80DFC9C - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFC8C: .4byte REG_BLDCNT -_080DFC90: .4byte 0x00003f44 -_080DFC94: .4byte gTasks -_080DFC98: .4byte sub_80DFC9C - thumb_func_end sub_80DFC24 - - thumb_func_start sub_80DFC9C -sub_80DFC9C: @ 80DFC9C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080DFD04 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - lsrs r2, r0, 8 - lsls r0, 24 - lsrs r1, r0, 24 - movs r3, 0xC - ldrsh r0, [r4, r3] - ldrb r3, [r4, 0x8] - cmp r0, r3 - bne _080DFD18 - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r2, 8 - orrs r1, r0 - movs r3, 0 - strh r1, [r4, 0xA] - ldr r0, _080DFD08 @ =REG_BLDALPHA - strh r1, [r0] - strh r3, [r4, 0xC] - cmp r2, 0x10 - bne _080DFD1E - ldr r2, _080DFD0C @ =gSprites - ldr r1, _080DFD10 @ =gObjectBankIDs - ldr r0, _080DFD14 @ =gAnimBankAttacker - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask - b _080DFD1E - .align 2, 0 -_080DFD04: .4byte gTasks -_080DFD08: .4byte REG_BLDALPHA -_080DFD0C: .4byte gSprites -_080DFD10: .4byte gObjectBankIDs -_080DFD14: .4byte gAnimBankAttacker -_080DFD18: - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_080DFD1E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DFC9C - - thumb_func_start sub_80DFD24 -sub_80DFD24: @ 80DFD24 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080DFD48 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080DFD4C @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r1, 0x8] - movs r2, 0x80 - lsls r2, 5 - strh r2, [r1, 0xA] - ldr r0, _080DFD50 @ =sub_80DFD58 - str r0, [r1] - ldr r0, _080DFD54 @ =REG_BLDALPHA - strh r2, [r0] - bx lr - .align 2, 0 -_080DFD48: .4byte gTasks -_080DFD4C: .4byte gBattleAnimArgs -_080DFD50: .4byte sub_80DFD58 -_080DFD54: .4byte REG_BLDALPHA - thumb_func_end sub_80DFD24 - - thumb_func_start sub_80DFD58 -sub_80DFD58: @ 80DFD58 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080DFDA8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0xA] - lsrs r1, r0, 8 - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0xC - ldrsh r0, [r2, r3] - ldrb r3, [r2, 0x8] - cmp r0, r3 - bne _080DFDB4 - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r3, 8 - orrs r1, r0 - movs r0, 0 - strh r1, [r2, 0xA] - ldr r5, _080DFDAC @ =REG_BLDALPHA - strh r1, [r5] - strh r0, [r2, 0xC] - cmp r3, 0 - bne _080DFDBA - ldr r0, _080DFDB0 @ =REG_BLDCNT - strh r3, [r0] - strh r3, [r5] - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _080DFDBA - .align 2, 0 -_080DFDA8: .4byte gTasks -_080DFDAC: .4byte REG_BLDALPHA -_080DFDB0: .4byte REG_BLDCNT -_080DFDB4: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] -_080DFDBA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80DFD58 - - thumb_func_start sub_80DFDC0 -sub_80DFDC0: @ 80DFDC0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080DFDE8 @ =REG_BLDALPHA - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080DFDEC @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankIdentity_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080DFDF8 - ldr r1, _080DFDF0 @ =REG_BLDCNT - ldr r2, _080DFDF4 @ =0x00003f42 - b _080DFDFC - .align 2, 0 -_080DFDE8: .4byte REG_BLDALPHA -_080DFDEC: .4byte gAnimBankAttacker -_080DFDF0: .4byte REG_BLDCNT -_080DFDF4: .4byte 0x00003f42 -_080DFDF8: - ldr r1, _080DFE0C @ =REG_BLDCNT - ldr r2, _080DFE10 @ =0x00003f44 -_080DFDFC: - adds r0, r2, 0 - strh r0, [r1] - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080DFE0C: .4byte REG_BLDCNT -_080DFE10: .4byte 0x00003f44 - thumb_func_end sub_80DFDC0 - - thumb_func_start sub_80DFE14 -sub_80DFE14: @ 80DFE14 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _080DFE80 @ =gAnimBankTarget - ldrb r0, [r6] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x30] - ldr r5, _080DFE84 @ =gAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r6] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBankPosition - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - movs r0, 0x7E - strh r0, [r4, 0x2E] - adds r0, r4, 0 - bl sub_8078A5C - ldrh r0, [r4, 0x30] - negs r0, r0 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x32] - negs r0, r0 - strh r0, [r4, 0x36] - ldr r0, _080DFE88 @ =0x0000ffd8 - strh r0, [r4, 0x3A] - ldr r1, _080DFE8C @ =sub_80DFE90 - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080DFE80: .4byte gAnimBankTarget -_080DFE84: .4byte gAnimBankAttacker -_080DFE88: .4byte 0x0000ffd8 -_080DFE8C: .4byte sub_80DFE90 - thumb_func_end sub_80DFE14 - - thumb_func_start sub_80DFE90 -sub_80DFE90: @ 80DFE90 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r5, [r4, 0x30] - ldrh r0, [r4, 0x34] - adds r2, r5, r0 - strh r2, [r4, 0x34] - ldrh r3, [r4, 0x32] - ldrh r6, [r4, 0x36] - adds r1, r3, r6 - strh r1, [r4, 0x36] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - movs r6, 0x3C - ldrsh r0, [r4, r6] - cmp r0, 0 - bne _080DFED2 - adds r0, r2, r5 - strh r0, [r4, 0x34] - adds r1, r3 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r4, 0x26] - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] -_080DFED2: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x3A - ldrsh r1, [r4, r2] - bl Sin - ldrh r6, [r4, 0x26] - adds r0, r6 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - cmp r0, 0x7F - ble _080DFF02 - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3A] - adds r0, 0x14 - strh r0, [r4, 0x3A] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] -_080DFF02: - ldrh r0, [r4, 0x2E] - subs r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _080DFF14 - adds r0, r4, 0 - bl DestroyAnimSprite -_080DFF14: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80DFE90 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 0fe09e652..4775e13d6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -296,7 +296,7 @@ SECTIONS { asm/rock.o(.text); asm/ghost.o(.text); src/battle/anim/dragon.o(.text); - asm/dragon.o(.text); + src/battle/anim/dark.o(.text); asm/dark.o(.text); asm/ground.o(.text); asm/normal.o(.text); diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c new file mode 100755 index 000000000..306784609 --- /dev/null +++ b/src/battle/anim/dark.c @@ -0,0 +1,138 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "scanline_effect.h" + +void sub_80DFE90(struct Sprite *sprite); + +void sub_80DFC9C(u8 taskId); +void sub_80DFD58(u8 taskId); + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u8 gObjectBankIDs[]; + +// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage + +void sub_80DFC24(u8 taskId) +{ + int bank; + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + bank = gAnimBankAttacker; + gTasks[taskId].data[1] = 16; + REG_BLDALPHA = 16; + if (GetBankIdentity_permutated(bank) == 1) + REG_BLDCNT = 0x3F42; + else + REG_BLDCNT = 0x3F44; + gTasks[taskId].func = sub_80DFC9C; +} + +void sub_80DFC9C(u8 taskId) +{ + u8 r2 = gTasks[taskId].data[1] >> 8; + u8 r1 = gTasks[taskId].data[1]; + if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0]) + { + r2++; + r1--; + gTasks[taskId].data[1] = (r2 << 8) | r1; + REG_BLDALPHA = (r2 << 8) | r1; + gTasks[taskId].data[2] = 0; + if (r2 == 16) + { + gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 1; + DestroyAnimVisualTask(taskId); + } + } + else + gTasks[taskId].data[2]++; +} + +void sub_80DFD24(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = 0x1000; + gTasks[taskId].func = sub_80DFD58; + REG_BLDALPHA = 0x1000; +} + +void sub_80DFD58(u8 taskId) +{ + u8 r1 = gTasks[taskId].data[1] >> 8; + u8 r5 = gTasks[taskId].data[1]; + if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0]) + { + r1--; + r5++; + gTasks[taskId].data[1] = (r1 << 8) | r5; + REG_BLDALPHA = (r1 << 8) | r5; + gTasks[taskId].data[2] = 0; + if (r1 == 0) + { + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimVisualTask(taskId); + } + } + else + gTasks[taskId].data[2]++; +} + +// unlike the above is only used in Feint Attack + +void sub_80DFDC0(u8 taskId) +{ + REG_BLDALPHA = 0x1000; + if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) + REG_BLDCNT = 0x3F42; + else + REG_BLDCNT = 0x3F44; + DestroyAnimVisualTask(taskId); +} + +// unused sprite template's callback + +void sub_80DFE14(struct Sprite *sprite) +{ + sprite->data[1] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2); + sprite->data[3] = GetBankPosition(gAnimBankTarget, 3); + sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3); + sprite->data[0] = 0x7E; + sub_8078A5C(sprite); + sprite->data[3] = -sprite->data[1]; + sprite->data[4] = -sprite->data[2]; + sprite->data[6] = 0xFFD8; + sprite->callback = sub_80DFE90; + sub_80DFE90(sprite); +} + +void sub_80DFE90(struct Sprite *sprite) +{ + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + if (sprite->data[7] == 0) + { + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + sprite->data[0]--; + } + sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]); + sprite->data[5] = (sprite->data[5] + 3) & 0xFF; + if (sprite->data[5] > 0x7F) + { + sprite->data[5] = 0; + sprite->data[6] += 20; + sprite->data[7]++; + } + if (--sprite->data[0] == 0) + DestroyAnimSprite(sprite); +} \ No newline at end of file diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index 04859e39f..0feb27dac 100755 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -3,7 +3,7 @@ #include "trig.h" #include "battle_anim.h" #include "sound.h" -#include "unknown_task.h" +#include "scanline_effect.h" void sub_80DF81C(struct Sprite *sprite); void sub_80DFBD8(struct Sprite *sprite); @@ -19,9 +19,10 @@ extern u8 gBankAttacker; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; extern u16 gUnknown_03000730[]; - +extern u8 gObjectBankIDs[]; // Outrage + void sub_80DF5A0(struct Sprite *sprite) { sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); @@ -44,6 +45,8 @@ void sub_80DF5A0(struct Sprite *sprite) sprite->callback = sub_8078504; } +// part of Dragon Breath + void sub_80DF63C(struct Sprite *sprite) { sub_8078650(sprite); @@ -69,6 +72,8 @@ void sub_80DF63C(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, move_anim_8074EE0); } +// Dragon Rage + void sub_80DF6F0(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) @@ -87,6 +92,8 @@ void sub_80DF6F0(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, move_anim_8074EE0); } +// Dragon Breath init + void sub_80DF760(struct Sprite *sprite) { if (GetBankSide(gAnimBankAttacker)) @@ -94,6 +101,8 @@ void sub_80DF760(struct Sprite *sprite) sub_80DF63C(sprite); } +//next 2 tasks might be Dragon Dance orbs? + void sub_80DF78C(struct Sprite *sprite) { u16 r5; @@ -152,25 +161,27 @@ void sub_80DF81C(struct Sprite *sprite) } } +// Dragon Dance scanline eff + void sub_80DF924(u8 taskId) { - struct UnknownTaskStruct sp; + struct ScanlineEffectParams sp; struct Task *task = &gTasks[taskId]; u16 i; u8 r1; if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) { - sp.dest = ®_BG1HOFS; + sp.dmaDest = ®_BG1HOFS; task->data[2] = gBattle_BG1_X; } else { - sp.dest = ®_BG2HOFS; + sp.dmaDest = ®_BG2HOFS; task->data[2] = gBattle_BG2_X; } - sp.control = 0xA2600001; - sp.unk8 = 1; - sp.unk9 = 0; + sp.dmaControl = 0xA2600001; + sp.initState = 1; + sp.unused9 = 0; r1 = sub_8077FC0(gAnimBankAttacker); task->data[3] = r1 - 32; task->data[4] = r1 + 32; @@ -178,10 +189,10 @@ void sub_80DF924(u8 taskId) task->data[3] = 0; for(i = task->data[3];i <= task->data[4];i++) { - gUnknown_03004DE0[0][i] = task->data[2]; - gUnknown_03004DE0[1][i] = task->data[2]; + gScanlineEffectRegBuffers[0][i] = task->data[2]; + gScanlineEffectRegBuffers[1][i] = task->data[2]; } - sub_80895F8(sp); + ScanlineEffect_SetParams(sp); task->func = sub_80DF9F4; } @@ -214,7 +225,7 @@ void sub_80DF9F4(u8 taskId) sub_80DFAB0(task); break; case 3: - gUnknown_03004DC0.unk15 = 3; + gScanlineEffect.state = 3; task->data[0]++; break; case 4: @@ -229,12 +240,14 @@ void sub_80DFAB0(struct Task *task) u16 i; for (i = task->data[3]; i <= task->data[4]; i++) { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2]; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2]; r3 = (r3 + 8) & 0xFF; } task->data[5] = (task->data[5] + 9) & 0xFF; } +// Overheat + void sub_80DFB28(struct Sprite *sprite) { int r6 = (gBattleAnimArgs[2] * 3) / 5; @@ -259,4 +272,5 @@ void sub_80DFBD8(struct Sprite *sprite) sprite->pos2.y = sprite->data[5] / 10; if (++sprite->data[0] > sprite->data[3]) DestroyAnimSprite(sprite); -} \ No newline at end of file +} + -- cgit v1.2.3 From a7fe23e3434f427995595b6747ac0f3e57b94621 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 11 Jan 2018 11:37:27 -0600 Subject: fix typo in Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index cb4aeb46c..d9d7c5a22 100644 --- a/Makefile +++ b/Makefile @@ -134,7 +134,7 @@ ruby_rev1: ; @$(MAKE) --no-print-directory VERSION=RUBY REVISION=1 ruby_rev2: ; @$(MAKE) --no-print-directory VERSION=RUBY REVISION=2 sapphire: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE sapphire_rev1: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE REVISION=1 -sapphire_rev2: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE REVISION=1 +sapphire_rev2: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE REVISION=2 ruby_de: ; @$(MAKE) --no-print-directory VERSION=RUBY LANGUAGE=GERMAN sapphire_de: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE LANGUAGE=GERMAN -- cgit v1.2.3 From bed652ee5411efbbbdf7e0920d9fd13646ec39c1 Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Thu, 11 Jan 2018 13:21:20 -0500 Subject: fixing things --- src/battle/anim/dark.c | 2 +- src/battle/anim/dragon.c | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 306784609..8ceb00298 100755 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -135,4 +135,4 @@ void sub_80DFE90(struct Sprite *sprite) } if (--sprite->data[0] == 0) DestroyAnimSprite(sprite); -} \ No newline at end of file +} diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index 0feb27dac..bf39e01c0 100755 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -127,7 +127,7 @@ void sub_80DF81C(struct Sprite *sprite) { switch (sprite->data[0]) { - case 0: + case 0: sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); @@ -143,7 +143,7 @@ void sub_80DF81C(struct Sprite *sprite) sprite->data[0]++; } break; - case 1: + case 1: sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95) sprite->data[7] = 0x96; @@ -201,7 +201,7 @@ void sub_80DF9F4(u8 taskId) struct Task *task = &gTasks[taskId]; switch (task->data[0]) { - case 0: + case 0: if (++task->data[7] > 1) { task->data[7] = 0; @@ -210,12 +210,12 @@ void sub_80DF9F4(u8 taskId) } sub_80DFAB0(task); break; - case 1: + case 1: if (++task->data[1] > 0x3C) task->data[0]++; sub_80DFAB0(task); break; - case 2: + case 2: if (++task->data[7] > 1) { task->data[7] = 0; @@ -224,11 +224,11 @@ void sub_80DF9F4(u8 taskId) } sub_80DFAB0(task); break; - case 3: + case 3: gScanlineEffect.state = 3; task->data[0]++; break; - case 4: + case 4: DestroyAnimVisualTask(taskId); break; } @@ -273,4 +273,3 @@ void sub_80DFBD8(struct Sprite *sprite) if (++sprite->data[0] > sprite->data[3]) DestroyAnimSprite(sprite); } - -- cgit v1.2.3 From 4763fccf6dae7ee1bf9f40973fce5934076a9ee8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 11 Jan 2018 13:36:10 -0600 Subject: remove all built ROMs when running make tidy --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d9d7c5a22..bb5c1b563 100644 --- a/Makefile +++ b/Makefile @@ -96,8 +96,9 @@ clean: tidy $(RM) $(ALL_OBJECTS) find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' \) -exec rm {} + +ALL_BUILDS := ruby ruby_rev1 ruby_rev1 sapphire sapphire_rev1 sapphire_rev2 ruby_de sapphire_de tidy: - $(RM) poke$(BUILD_NAME){.gba,.elf,.map} + $(RM) $(ALL_BUILDS:%=poke%{.gba,.elf,.map}) $(RM) -r build %.gba: %.elf -- cgit v1.2.3 From f658a355e5434a647153d76087b50eec0d5041b1 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 11 Jan 2018 14:59:41 -0500 Subject: idiot, remove conflicts please --- Makefile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Makefile b/Makefile index 80f9d78df..8cbfd8245 100644 --- a/Makefile +++ b/Makefile @@ -160,12 +160,8 @@ include override.mk %.lz: % ; $(GBAGFX) $< $@ $(GFX_OPTS) %.rl: % ; $(GBAGFX) $< $@ $(GFX_OPTS) -<<<<<<< HEAD -======= - #### Sound Rules #### ->>>>>>> 62042c1cbf95b3f26fba3baa4f0a339f0b663462 sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif $(AIF2PCM) $< $@ --compress -- cgit v1.2.3