From 0976df0b2fe28301e5676d244687a42eed34ac3e Mon Sep 17 00:00:00 2001 From: MokhaLeee Date: Mon, 8 Jul 2024 13:47:00 +0000 Subject: [PATCH] renamed --- include/bmlib.h | 26 +++---- include/savemenu.h | 6 +- include/variables.h | 2 +- src/bmlib-hblank.c | 186 +++++++++++--------------------------------- src/bmlib.c | 5 ++ src/bmshop.c | 6 +- src/savedraw.c | 62 +++++++-------- sym_iwram.txt | 2 +- 8 files changed, 101 insertions(+), 194 deletions(-) diff --git a/include/bmlib.h b/include/bmlib.h index df3374e9..1df343ed 100644 --- a/include/bmlib.h +++ b/include/bmlib.h @@ -270,26 +270,26 @@ void MemCpy(const void * src, void * dst, int size); void PutDrawTextCentered(struct Text * text, int x, int y, char const * str, int width); int sub_8014CA4(int, int, int, int); -struct Unknown03004990 { +struct BgVerticalScrollSt { /* 000 */ u16 buf[3 * 320]; /* 780 */ u16 * src[3]; /* 78C */ u16 * dst[3]; /* 798 */ u8 unk_798[3]; - /* 79B */ u8 unk_79B; - /* 79C */ u8 unk_79C; - /* 79D */ bool unk_79D; - /* 79E */ bool unk_79E; + /* 79B */ u8 frame_flip; + /* 79C */ u8 frame; + /* 79D */ bool updating; + /* 79E */ bool scroll_en; }; -extern struct Unknown03004990 * gUnknown_03004990; +extern struct BgVerticalScrollSt * gpBgVerticalScrollSt; -void HBlank_8014CC4(void); -void sub_8014DA8(struct Unknown03004990 * buf); -void sub_8014E3C(void); -u16 * sub_8014E74(int, int); -void sub_8014EA8(void); -void sub_8014EC4(int index,void * pr_offset); -// ??? sub_8014EDC(???); +void HBlank_BgVerticalScroll(void); +void StartBgVerticalScroll(struct BgVerticalScrollSt * buf); +void EndBgVerticalScroll(void); +u16 * GetBgVerticalScrollBuffer(int, int); +void FlipBgVerticalScroll(void); +void SetBgVerticalScrollPosition(int index,void * pr_offset); +// ??? ResetBgVerticalScrollPosition(???); void sub_8014EF4(int); // ??? sub_8014F10(???); // ??? sub_8014F30(???); diff --git a/include/savemenu.h b/include/savemenu.h index de4ef856..f0702324 100644 --- a/include/savemenu.h +++ b/include/savemenu.h @@ -108,8 +108,8 @@ struct SaveDrawProc { /* 3B */ u8 unk_3b; /* 3C */ u8 unk_3c; // 3D - unused? - /* 3E */ u16 unk_3e; - /* 40 */ u16 unk_40; + /* 3E */ u16 bg_x; + /* 40 */ u16 bg_y; }; struct SaveMenuProc { @@ -274,7 +274,7 @@ const char * GetWMNodeNameForSaveMenu(void); void SaveMenuCopyPalette(u16 *, u16 *, int); void sub_80AA7AC(int a, int b); // ??? sub_80AA7EC(???); -void sub_80AA9D8(struct SaveDrawProc *); +void SaveDraw_ScrollFogBG(struct SaveDrawProc *); // ??? SaveDraw_OnEnd(???); // ??? SaveDraw_Init(???); // ??? sub_80AAB78(???); diff --git a/include/variables.h b/include/variables.h index a86bcc98..92d461de 100644 --- a/include/variables.h +++ b/include/variables.h @@ -157,7 +157,7 @@ extern void (* sHBlankHandler2)(void); extern u16 * gOamAffinePutIt; // extern ??? gUnknown_03004160 // extern ??? gUnknown_03004960 -// extern ??? gUnknown_03004990 +// extern ??? gpBgVerticalScrollSt // extern ??? gStatGainSimUnit extern struct Unit * gActiveUnit; // extern ??? gUnknown_03004E70 diff --git a/src/bmlib-hblank.c b/src/bmlib-hblank.c index cac1fecb..8d8c1d30 100644 --- a/src/bmlib-hblank.c +++ b/src/bmlib-hblank.c @@ -3,14 +3,9 @@ #include "spline.h" #include "hardware.h" -int sub_8014CA4(int timer, int speed, int a, int b) +void HBlank_BgVerticalScroll(void) { - return sub_800A42C(DivArm(speed, timer * 0x1000), a, b); -} - -void HBlank_8014CC4(void) -{ - int bg; + int i; u16 vcount = REG_VCOUNT + 1; if (vcount == 228) @@ -18,183 +13,92 @@ void HBlank_8014CC4(void) if (vcount < DISPLAY_HEIGHT) { - if (gUnknown_03004990->unk_79D) + if (gpBgVerticalScrollSt->updating) { - u16 * src = gUnknown_03004990->buf + gUnknown_03004990->unk_79C * 480; - for (bg = 0; bg < 3; bg++) - { - if (gUnknown_03004990->dst[bg]) - { - *gUnknown_03004990->dst[bg] = vcount[src + 160 * bg]; // ¿ - } - } + u16 * src = gpBgVerticalScrollSt->buf + gpBgVerticalScrollSt->frame * 480; + for (i = 0; i < 3; i++) + if (gpBgVerticalScrollSt->dst[i]) + *gpBgVerticalScrollSt->dst[i] = vcount[src + DISPLAY_HEIGHT * i]; // ¿ } + return; } - else if (vcount == DISPLAY_HEIGHT) - { - if (gUnknown_03004990->unk_79E) - { - gUnknown_03004990->unk_79D = true; - gUnknown_03004990->unk_79C = gUnknown_03004990->unk_79B; - for (bg = 0; bg < 3; bg++) - { - gUnknown_03004990->dst[bg] = gUnknown_03004990->src[bg]; - } + if (vcount == DISPLAY_HEIGHT) + { + if (gpBgVerticalScrollSt->scroll_en) + { + gpBgVerticalScrollSt->updating = true; + gpBgVerticalScrollSt->frame = gpBgVerticalScrollSt->frame_flip; + + for (i = 0; i < 3; i++) + gpBgVerticalScrollSt->dst[i] = gpBgVerticalScrollSt->src[i]; } else - { - gUnknown_03004990->unk_79D = false; - } + gpBgVerticalScrollSt->updating = false; } } -#if NONMATCHING - -void sub_8014DA8(struct Unknown03004990 * buf) +void StartBgVerticalScroll(struct BgVerticalScrollSt * buf) { - int bg; - gUnknown_03004990 = buf; + int i; + gpBgVerticalScrollSt = buf; - for (bg = 0; bg < 3; bg++) + for (i = 0; i < 3; i++) { - gUnknown_03004990->unk_798[bg] = 0; + gpBgVerticalScrollSt->unk_798[i] = 0; - gUnknown_03004990->dst[bg] = NULL; - gUnknown_03004990->src[bg] = NULL; + gpBgVerticalScrollSt->dst[i] = gpBgVerticalScrollSt->src[i] = NULL; } - gUnknown_03004990->unk_79B = 0; - gUnknown_03004990->unk_79C = 0; - gUnknown_03004990->unk_79D = false; - gUnknown_03004990->unk_79E = false; + gpBgVerticalScrollSt->frame = gpBgVerticalScrollSt->frame_flip = 0; + + gpBgVerticalScrollSt->updating = false; + gpBgVerticalScrollSt->scroll_en = false; SetPrimaryHBlankHandler(NULL); - SetPrimaryHBlankHandler(HBlank_8014CC4); + SetPrimaryHBlankHandler(HBlank_BgVerticalScroll); } -#else - -/* https://decomp.me/scratch/isCOG */ -NAKEDFUNC -void sub_8014DA8(struct Unknown03004990 * buf) -{ -asm("\ - .syntax unified\n\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6, r7}\n\ - ldr r1, _08014E24 @ gUnknown_03004990\n\ - str r0, [r1]\n\ - movs r3, #0\n\ - adds r6, r1, #0\n\ - adds r5, r6, #0\n\ - movs r0, #0xf3\n\ - lsls r0, r0, #3\n\ - mov r8, r0\n\ - movs r4, #0\n\ - ldr r1, _08014E28 @ 0x0000078C\n\ - mov ip, r1\n\ - movs r2, #0xf0\n\ - lsls r2, r2, #3\n\ - mov r9, r2\n\ -_08014DCC:\n\ - ldr r0, [r5]\n\ - add r0, r8\n\ - adds r0, r0, r3\n\ - strb r4, [r0]\n\ - ldr r0, [r5]\n\ - lsls r2, r3, #2\n\ - mov r7, ip\n\ - adds r1, r0, r7\n\ - adds r1, r1, r2\n\ - add r0, r9\n\ - adds r0, r0, r2\n\ - str r4, [r0]\n\ - str r4, [r1]\n\ - adds r3, #1\n\ - cmp r3, #2\n\ - ble _08014DCC\n\ - ldr r0, [r6]\n\ - ldr r1, _08014E2C @ 0x0000079B\n\ - adds r2, r0, r1\n\ - movs r1, #0\n\ - strb r1, [r2]\n\ - ldr r2, _08014E30 @ 0x0000079C\n\ - adds r0, r0, r2\n\ - strb r1, [r0]\n\ - ldr r0, [r6]\n\ - ldr r7, _08014E34 @ 0x0000079D\n\ - adds r0, r0, r7\n\ - strb r1, [r0]\n\ - ldr r0, [r6]\n\ - adds r2, #2\n\ - adds r0, r0, r2\n\ - strb r1, [r0]\n\ - movs r0, #0\n\ - bl SetPrimaryHBlankHandler\n\ - ldr r0, _08014E38 @ HBlank_8014CC4\n\ - bl SetPrimaryHBlankHandler\n\ - pop {r3, r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08014E24: .4byte gUnknown_03004990\n\ -_08014E28: .4byte 0x0000078C\n\ -_08014E2C: .4byte 0x0000079B\n\ -_08014E30: .4byte 0x0000079C\n\ -_08014E34: .4byte 0x0000079D\n\ -_08014E38: .4byte HBlank_8014CC4\n\ - .syntax divided\n\ -"); -} - -#endif - -void sub_8014E3C(void) +void EndBgVerticalScroll(void) { SetPrimaryHBlankHandler(NULL); - CpuFill16(0, gUnknown_03004990->buf, sizeof(gUnknown_03004990->buf)); - gUnknown_03004990->unk_79E = 0; + CpuFill16(0, gpBgVerticalScrollSt->buf, sizeof(gpBgVerticalScrollSt->buf)); + gpBgVerticalScrollSt->scroll_en = false; } -u16 * sub_8014E74(int bg, int flip) +u16 * GetBgVerticalScrollBuffer(int i, int flip) { - int frame = (gUnknown_03004990->unk_79B + flip) & 1; - u16 * tm = gUnknown_03004990->buf + frame * 480; - return tm + bg * 160; + int frame = (gpBgVerticalScrollSt->frame_flip + flip) & 1; + u16 * tm = gpBgVerticalScrollSt->buf + frame * 480; + return tm + i * DISPLAY_HEIGHT; } -void sub_8014EA8(void) +void FlipBgVerticalScroll(void) { - gUnknown_03004990->unk_79B ^= 1; + gpBgVerticalScrollSt->frame_flip ^= 1; } -void sub_8014EC4(int index, void * pr_offset) +void SetBgVerticalScrollPosition(int index, void * pr_offset) { - gUnknown_03004990->src[index] = pr_offset; + gpBgVerticalScrollSt->src[index] = pr_offset; } -void sub_8014EDC(int index) +void ResetBgVerticalScrollPosition(int index) { - gUnknown_03004990->src[index] = NULL; + gpBgVerticalScrollSt->src[index] = NULL; } void sub_8014EF4(int index) { - gUnknown_03004990->unk_798[index] &= 3; + gpBgVerticalScrollSt->unk_798[index] &= 3; } void sub_8014F10(int index) { - gUnknown_03004990->unk_798[index] = (gUnknown_03004990->unk_798[index] & 3) | 1; + gpBgVerticalScrollSt->unk_798[index] = (gpBgVerticalScrollSt->unk_798[index] & 3) | 1; } void sub_8014F30(int index) { - gUnknown_03004990->unk_798[index] = (gUnknown_03004990->unk_798[index] & 3) | 2; + gpBgVerticalScrollSt->unk_798[index] = (gpBgVerticalScrollSt->unk_798[index] & 3) | 2; } diff --git a/src/bmlib.c b/src/bmlib.c index bc505389..9cddd6ce 100644 --- a/src/bmlib.c +++ b/src/bmlib.c @@ -2010,3 +2010,8 @@ void PutDrawTextCentered(struct Text * text, int x, int y, char const * str, int PutText(text, gBG0TilemapBuffer + TILEMAP_INDEX(x, y)); } + +int sub_8014CA4(int timer, int speed, int a, int b) +{ + return sub_800A42C(DivArm(speed, timer * 0x1000), a, b); +} diff --git a/src/bmshop.c b/src/bmshop.c index 02cb91ea..93e651e6 100644 --- a/src/bmshop.c +++ b/src/bmshop.c @@ -1289,7 +1289,7 @@ void HandleShopBuyAction(struct ProcShop * proc) DisplayGoldBoxText(TILEMAP_LOCATED(gBG0TilemapBuffer, 27, 6)); } -int ShopTryMoveHand(int pos, int pre, bool scroll_en) +int ShopTryMoveHand(int pos, int pre, bool hscroll_en) { int previous; @@ -1305,7 +1305,7 @@ int ShopTryMoveHand(int pos, int pre, bool scroll_en) { if (pos == 0) { - if (scroll_en && (gKeyStatusPtr->newKeys & DPAD_UP)) + if (hscroll_en && (gKeyStatusPtr->newKeys & DPAD_UP)) pos = pre - 1; } else @@ -1317,7 +1317,7 @@ int ShopTryMoveHand(int pos, int pre, bool scroll_en) { if (pos == (pre - 1)) { - if (scroll_en && (gKeyStatusPtr->newKeys & DPAD_DOWN)) + if (hscroll_en && (gKeyStatusPtr->newKeys & DPAD_DOWN)) pos = 0; } else diff --git a/src/savedraw.c b/src/savedraw.c index a6f3f7ce..dc3ba5b5 100644 --- a/src/savedraw.c +++ b/src/savedraw.c @@ -290,41 +290,39 @@ void sub_80AA7EC(struct SaveDrawProc * proc) } //! FE8U = 0x080AA9D8 -void sub_80AA9D8(struct SaveDrawProc * proc) +void SaveDraw_ScrollFogBG(struct SaveDrawProc * proc) { u16 * ptr; int i; s16 x; - u32 unk_40; - u32 r6; + u32 bg_y; + u32 angle; - proc->unk_3e++; - proc->unk_40 += 2; + proc->bg_x++; + proc->bg_y += 2; - x = (proc->unk_3e & 0xfff) >> 3; - unk_40 = (proc->unk_40 / 8) & 0xff; + x = (proc->bg_x & 0xfff) >> 3; + bg_y = (proc->bg_y / 8) & 0xff; - ptr = sub_8014E74(0, 1); - r6 = unk_40; + ptr = GetBgVerticalScrollBuffer(0, true); + angle = bg_y; - for (i = 0; i < 0xA0; i++) + for (i = 0; i < DISPLAY_HEIGHT; i++) { - int v = SIN(r6) / 0x300; + int v = SIN(angle) / 0x300; ptr[i] = (v + x) & 0x1ff; - r6 += 0xC; + angle += 12; } - BG_SetPosition(2, x, unk_40); + BG_SetPosition(BG_2, x, bg_y); - sub_8014EA8(); - - return; + FlipBgVerticalScroll(); } //! FE8U = 0x080AAA6C void SaveDraw_OnEnd(void) { - sub_8014E3C(); + EndBgVerticalScroll(); return; } @@ -359,15 +357,15 @@ void SaveDraw_Init(struct SaveDrawProc * proc) } proc->unk_3c = SAVE_MENU_PARENT(proc)->sus_slot; - proc->unk_40 = 0; - proc->unk_3e = 0; + proc->bg_y = 0; + proc->bg_x = 0; - sub_8014DA8(EWRAM_ENTRY); - sub_8014EC4(0, (void *)REG_ADDR_BG2HOFS); + StartBgVerticalScroll(EWRAM_ENTRY); + SetBgVerticalScrollPosition(0, (void *)REG_ADDR_BG2HOFS); sub_8014EF4(0); - sub_80AA9D8(proc); - gUnknown_03004990->unk_79E = true; + SaveDraw_ScrollFogBG(proc); + gpBgVerticalScrollSt->scroll_en = true; sub_80AB548(); @@ -668,7 +666,7 @@ void SaveDraw_Loop_Main(struct SaveDrawProc * proc) sub_80AACBC(proc); } - sub_80AA9D8(proc); + SaveDraw_ScrollFogBG(proc); sub_80AB56C(proc->unk_2a); } @@ -929,24 +927,24 @@ void sub_80AB56C(u32 a) { //! FE8U = 0x080AB720 void sub_80AB720(struct SaveDrawProc * proc) { - proc->unk_40 = 0; - proc->unk_3e = 0; + proc->bg_y = 0; + proc->bg_x = 0; - sub_8014EC4(0, (void *)REG_ADDR_BG2HOFS); + SetBgVerticalScrollPosition(0, (void *)REG_ADDR_BG2HOFS); sub_8014EF4(0); - sub_80AA9D8(proc); + SaveDraw_ScrollFogBG(proc); - gUnknown_03004990->unk_79E = true; + gpBgVerticalScrollSt->scroll_en = true; return; } struct ProcCmd CONST_DATA gProcScr_08A206F8[] = { - PROC_SET_END_CB(sub_8014E3C), + PROC_SET_END_CB(EndBgVerticalScroll), PROC_SLEEP(0), PROC_CALL(sub_80AB720), - PROC_REPEAT(sub_80AA9D8), + PROC_REPEAT(SaveDraw_ScrollFogBG), PROC_END, }; @@ -954,7 +952,7 @@ struct ProcCmd CONST_DATA gProcScr_08A206F8[] = { //! FE8U = 0x080AB760 void sub_80AB760(void* unused) { Proc_Start(gProcScr_08A206F8, PROC_TREE_3); - sub_8014DA8(EWRAM_ENTRY); + StartBgVerticalScroll(EWRAM_ENTRY); return; } diff --git a/sym_iwram.txt b/sym_iwram.txt index e324c1aa..12ae6df5 100644 --- a/sym_iwram.txt +++ b/sym_iwram.txt @@ -112,7 +112,7 @@ . = 0x004960; gUnknown_03004960 = .; . = 0x004970; gSpriteAllocIt = .; . = 0x004980; gFaces = .; -. = 0x004990; gUnknown_03004990 = .; +. = 0x004990; gpBgVerticalScrollSt = .; . = 0x0049A0; gWorkingBmMap = .; . = 0x0049B0; gMovMapFillStPool1 = .; . = 0x004BB0; gWorkingTerrainMoveCosts = .;