diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-05-15 16:59:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-15 18:59:55 -0500 |
commit | f402e46cd3c8b7236673d6edbae77903a7cc0618 (patch) | |
tree | 37a19f3ab35a73c29d4d6da565741beaf7bb547f /src/code_8009804.c | |
parent | f65dee5a143bd543c74c010d7252eb76893ee243 (diff) |
Sese's April/May Dump (#37)
* splitting lots of pokemon square and labeling lots of other things
* actually commit this stuff
* more moving data and things
* more screen work
* split out some pokemon dungeon data
* lots of data work
* push more data work
* split kecleon, decomp another kanghaskhan func, and try to doc UpdateBGControl more
* lots of item work
* label more item things
* subtype -> category and doc types/category
Diffstat (limited to 'src/code_8009804.c')
-rw-r--r-- | src/code_8009804.c | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/src/code_8009804.c b/src/code_8009804.c index 1f1b054..23407a7 100644 --- a/src/code_8009804.c +++ b/src/code_8009804.c @@ -3,15 +3,21 @@ extern u8 gUnknown_202D238[4]; extern s32 gUnknown_202D23C; +extern u16 gUnknown_202B038[2][32][32]; +extern u8 gUnknown_202B838[0x800]; +extern u8 gUnknown_202C038[0x800]; +extern u8 gUnknown_202C838[0x720]; struct unkStruct_202D240 { u32 *unk0; u32 *unk4; - u32 *unk8; + u32 size; }; extern struct unkStruct_202D240 gUnknown_202D240[8]; +extern void CpuCopy(void* dest, void *src, s32 size); + void vram_related_8009804(void) { u32 counter; @@ -38,17 +44,17 @@ void vram_related_8009804(void) *r1++ = 0; } r1 = (u32 *) PLTT; - for(counter = 0; counter < 0x78; counter++) + for(counter = 0; counter < 120; counter++) { *r1++ = 0; } r1 = (u32 *) OBJ_PLTT; - for(counter = 0; counter < 0x78; counter++) + for(counter = 0; counter < 120; counter++) { *r1++ = 0; } r1 = (u32 *) OAM; - for(counter = 0; counter < 0x100; counter++) + for(counter = 0; counter < 256; counter++) { *r1++ = 0xa000a0; } @@ -63,12 +69,12 @@ void sub_80098A0(void) gUnknown_202D238[3] = 0; } -void sub_80098BC(u32 *r0, u32 *r1, u32 *r2) +void sub_80098BC(u32 *r0, u32 *r1, u32 r2) { if(gUnknown_202D23C < 8){ gUnknown_202D240[gUnknown_202D23C].unk0 = r0; gUnknown_202D240[gUnknown_202D23C].unk4 = r1; - gUnknown_202D240[gUnknown_202D23C].unk8 = r2; + gUnknown_202D240[gUnknown_202D23C].size = r2; gUnknown_202D23C++; } } @@ -77,3 +83,43 @@ void sub_80098F8(u32 r0) { gUnknown_202D238[r0] = 1; } + +void sub_8009908(void) +{ + s32 index; + u32 iVar3; + + index = 0; + if (index < gUnknown_202D23C) { + iVar3 = 0; + do { + CpuCopy(gUnknown_202D240[index].unk0,gUnknown_202D240[index].unk4,gUnknown_202D240[index].size); + iVar3 += sizeof(struct unkStruct_202D240); + index++; + } while (index < gUnknown_202D23C); + } + gUnknown_202D23C = 0; + if (gUnknown_202D238[0] != 0) { + gUnknown_202D238[0] = 0; + CpuCopy(BG_SCREEN_ADDR(12),gUnknown_202B038, BG_SCREEN_SIZE); + } + if (gUnknown_202D238[1] != 0) { + gUnknown_202D238[1] = 0; + CpuCopy(BG_SCREEN_ADDR(13),gUnknown_202B838, BG_SCREEN_SIZE); + } + if (gUnknown_202D238[2] != 0) { + gUnknown_202D238[2] = 0; + CpuCopy(BG_SCREEN_ADDR(14),gUnknown_202C038, BG_SCREEN_SIZE); + } + if (gUnknown_202D238[3] != 0) { + gUnknown_202D238[3] = 0; + CpuCopy(BG_SCREEN_ADDR(15),gUnknown_202C838, BG_SCREEN_SIZE); + } +} + +void sub_80099C0(void) +{ + CpuCopy(BG_SCREEN_ADDR(12),gUnknown_202B038, BG_SCREEN_SIZE); + // TODO shouldn't this be 202B838? It didn't match... might need raw address + CpuCopy(BG_SCREEN_ADDR(13),gUnknown_202B038 + 0x1, BG_SCREEN_SIZE); +} |