mirror of
https://github.com/FireEmblemUniverse/fireemblem8u.git
synced 2024-10-06 18:03:27 +00:00
renamed
This commit is contained in:
parent
e2c7128dbd
commit
0976df0b2f
@ -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(???);
|
||||
|
@ -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(???);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@
|
||||
. = 0x004960; gUnknown_03004960 = .;
|
||||
. = 0x004970; gSpriteAllocIt = .;
|
||||
. = 0x004980; gFaces = .;
|
||||
. = 0x004990; gUnknown_03004990 = .;
|
||||
. = 0x004990; gpBgVerticalScrollSt = .;
|
||||
. = 0x0049A0; gWorkingBmMap = .;
|
||||
. = 0x0049B0; gMovMapFillStPool1 = .;
|
||||
. = 0x004BB0; gWorkingTerrainMoveCosts = .;
|
||||
|
Loading…
Reference in New Issue
Block a user