summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/region_map.s414
-rw-r--r--src/region_map.c180
2 files changed, 148 insertions, 446 deletions
diff --git a/asm/region_map.s b/asm/region_map.s
index 7572aec7b..0a8d5406b 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -5,420 +5,6 @@
.text
- thumb_func_start sub_80C48BC
-sub_80C48BC: @ 80C48BC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- cmp r1, 0x19
- bne _080C4920
- movs r3, 0
- ldr r0, _080C491C @ =gUnknown_20399EC
- mov r12, r0
- movs r1, 0x1
- adds r0, r5, 0
- ands r0, r1
- lsls r5, r0, 2
- movs r6, 0x5
- negs r6, r6
-_080C48E0:
- mov r7, r12
- ldr r1, [r7]
- lsls r2, r3, 4
- adds r0, r1, r2
- movs r7, 0xB5
- lsls r7, 2
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, r4
- beq _080C48F8
- cmp r4, 0xFF
- bne _080C490E
-_080C48F8:
- movs r7, 0xB6
- lsls r7, 2
- adds r0, r1, r7
- adds r0, r2
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1]
-_080C490E:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x18
- bls _080C48E0
- b _080C4954
- .align 2, 0
-_080C491C: .4byte gUnknown_20399EC
-_080C4920:
- ldr r0, _080C495C @ =gUnknown_20399EC
- ldr r2, [r0]
- lsls r1, 4
- adds r0, r2, r1
- movs r3, 0xB5
- lsls r3, 2
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, r4
- bne _080C4954
- movs r7, 0xB6
- lsls r7, 2
- adds r0, r2, r7
- adds r0, r1
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_080C4954:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C495C: .4byte gUnknown_20399EC
- thumb_func_end sub_80C48BC
-
- thumb_func_start sub_80C4960
-sub_80C4960: @ 80C4960
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- cmp r1, 0x19
- bne _080C49C4
- movs r3, 0
- ldr r0, _080C49C0 @ =gUnknown_20399EC
- mov r12, r0
- movs r1, 0x1
- adds r0, r5, 0
- ands r0, r1
- lsls r5, r0, 2
- movs r6, 0x5
- negs r6, r6
-_080C4984:
- mov r7, r12
- ldr r1, [r7]
- lsls r2, r3, 4
- adds r0, r1, r2
- movs r7, 0xA2
- lsls r7, 1
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, r4
- beq _080C499C
- cmp r4, 0xFF
- bne _080C49B2
-_080C499C:
- movs r7, 0xA4
- lsls r7, 1
- adds r0, r1, r7
- adds r0, r2
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1]
-_080C49B2:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x18
- bls _080C4984
- b _080C49F8
- .align 2, 0
-_080C49C0: .4byte gUnknown_20399EC
-_080C49C4:
- ldr r0, _080C4A00 @ =gUnknown_20399EC
- ldr r2, [r0]
- lsls r1, 4
- adds r0, r2, r1
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, r4
- beq _080C49F8
- movs r7, 0xA4
- lsls r7, 1
- adds r0, r2, r7
- adds r0, r1
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_080C49F8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4A00: .4byte gUnknown_20399EC
- thumb_func_end sub_80C4960
-
- thumb_func_start sub_80C4A04
-sub_80C4A04: @ 80C4A04
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _080C4AA4 @ =gUnknown_20399EC
-_080C4A0A:
- ldr r0, [r6]
- lsls r4, r5, 4
- movs r1, 0xB6
- lsls r1, 2
- adds r0, r1
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _080C4A3E
- bl DestroySprite
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xB7
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _080C4AA8 @ =0x000002de
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080C4A3E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x18
- bls _080C4A0A
- movs r5, 0
- ldr r6, _080C4AA4 @ =gUnknown_20399EC
-_080C4A4C:
- ldr r0, [r6]
- lsls r4, r5, 4
- movs r1, 0xA4
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _080C4A82
- bl DestroySprite
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xA6
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xA7
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080C4A82:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x18
- bls _080C4A4C
- ldr r4, _080C4AA4 @ =gUnknown_20399EC
- ldr r0, [r4]
- cmp r0, 0
- beq _080C4A9C
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C4A9C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4AA4: .4byte gUnknown_20399EC
-_080C4AA8: .4byte 0x000002de
- thumb_func_end sub_80C4A04
-
- thumb_func_start sub_80C4AAC
-sub_80C4AAC: @ 80C4AAC
- push {r4,lr}
- lsls r0, 24
- ldr r1, _080C4B24 @ =gUnknown_20399F0
- lsrs r0, 22
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- bne _080C4B28
- movs r0, 0x14
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0x50
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1]
- movs r0, 0x54
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x2]
- movs r0, 0x52
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x4]
- movs r0, 0x48
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x6]
- movs r0, 0x4A
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x8]
- movs r0, 0x40
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0xA]
- movs r0, 0x42
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0xC]
- movs r0, 0x44
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0xE]
- movs r0, 0x46
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x10]
- movs r0, 0x1
- b _080C4B2A
- .align 2, 0
-_080C4B24: .4byte gUnknown_20399F0
-_080C4B28:
- movs r0, 0
-_080C4B2A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C4AAC
-
- thumb_func_start sub_80C4B30
-sub_80C4B30: @ 80C4B30
- push {r4,lr}
- lsls r0, 24
- ldr r1, _080C4B44 @ =gUnknown_20399F0
- lsrs r0, 22
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- bne _080C4B48
- movs r0, 0
- b _080C4BB0
- .align 2, 0
-_080C4B44: .4byte gUnknown_20399F0
-_080C4B48:
- ldrh r1, [r0]
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x2]
- movs r0, 0x54
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x4]
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x6]
- movs r0, 0x48
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x8]
- movs r0, 0x4A
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0xA]
- movs r0, 0x40
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0xC]
- movs r0, 0x42
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0xE]
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x10]
- movs r0, 0x46
- bl SetGpuReg
- ldr r0, [r4]
- cmp r0, 0
- beq _080C4BAE
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C4BAE:
- movs r0, 0x1
-_080C4BB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C4B30
-
- thumb_func_start sub_80C4BB8
-sub_80C4BB8: @ 80C4BB8
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _080C4BE0 @ =gUnknown_20399F0
-_080C4BBE:
- lsls r0, r5, 2
- adds r4, r0, r6
- ldr r0, [r4]
- cmp r0, 0
- beq _080C4BD0
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C4BD0:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080C4BBE
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4BE0: .4byte gUnknown_20399F0
- thumb_func_end sub_80C4BB8
-
thumb_func_start sub_80C4BE4
sub_80C4BE4: @ 80C4BE4
push {lr}
diff --git a/src/region_map.c b/src/region_map.c
index 90b25c36b..493533c93 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -173,21 +173,21 @@ struct UnkStruct_20399E8
u16 field_0C[0x40];
}; // size = 0x8C
-struct UnkStruct_20399EC_2D4
+struct UnkStruct_20399EC_140
{
- u8 field_0;
- struct Sprite * field_4;
- u8 filler_8[8];
+ u8 filler_0[4];
+ u8 field_4;
+ struct Sprite * field_8;
+ u16 field_C;
+ u16 field_E;
};
struct UnkStruct_20399EC
{
u8 field_000[0x40];
u8 field_040[0x100];
- u8 field_140[4];
- struct UnkStruct_20399EC_2D4 field_144[25];
- struct UnkStruct_20399EC_2D4 field_2D4[24];
- u8 field_454[0xC];
+ struct UnkStruct_20399EC_140 field_140[25];
+ struct UnkStruct_20399EC_140 field_2D0[25];
u8 field_460;
u8 filler_461[2];
u8 field_463;
@@ -195,6 +195,19 @@ struct UnkStruct_20399EC
TaskFunc field_468;
}; // size = 0x46C
+struct UnkStruct_20399F0
+{
+ u16 bldcnt;
+ u16 bldy;
+ u16 bldalpha;
+ u16 winin;
+ u16 winout;
+ u16 win0h;
+ u16 win1h;
+ u16 win0v;
+ u16 win1v;
+};
+
EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL;
EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL;
EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL;
@@ -202,7 +215,7 @@ EWRAM_DATA struct UnkStruct_20399E0 * gUnknown_20399E0 = NULL;
EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL;
EWRAM_DATA struct UnkStruct_20399E8 * gUnknown_20399E8 = NULL;
EWRAM_DATA struct UnkStruct_20399EC * gUnknown_20399EC = NULL;
-EWRAM_DATA void * gUnknown_20399F0[3] = {};
+EWRAM_DATA struct UnkStruct_20399F0 * gUnknown_20399F0[3] = {};
EWRAM_DATA void * gUnknown_20399FC = NULL;
static void sub_80BFFD0(void);
@@ -284,11 +297,11 @@ void sub_80C440C(u8 taskId);
void sub_80C44E4(u8 taskId);
void sub_80C4750(void);
void sub_80C47F0(void);
-void sub_80C48BC(u8 a0, u8 a1, u8 a2);
-void sub_80C4960(u8 a0, u8 a1, u8 a2);
+void sub_80C48BC(u8 a0, u8 a1, bool8 a2);
+void sub_80C4960(u8 a0, u8 a1, bool8 a2);
void sub_80C4A04(void);
-void sub_80C4B30(u8 a0);
-void sub_80C4AAC(u8 a0);
+bool8 sub_80C4AAC(u8 a0);
+bool8 sub_80C4B30(u8 a0);
void sub_80C4BE4(void);
void sub_80C4C2C(u8 a0, u16 a1, u16 a2);
void sub_80C4C48(u16 a0);
@@ -636,8 +649,8 @@ void sub_80C04E4(u8 taskId)
sub_80C4ED0(FALSE);
sub_80C4324(FALSE);
sub_80C3154(FALSE);
- sub_80C48BC(sub_80C0E20(), 25, 0);
- sub_80C4960(sub_80C0E20(), 25, 0);
+ sub_80C48BC(sub_80C0E20(), 25, FALSE);
+ sub_80C4960(sub_80C0E20(), 25, FALSE);
}
gUnknown_20399D4->field_47A0++;
break;
@@ -1109,8 +1122,8 @@ void sub_80C1098(u8 taskId)
if (sub_80C0E34() == gUnknown_20399D8->field_1CCA)
{
sub_80C4324(FALSE);
- sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, 0);
- sub_80C4960(gUnknown_20399D8->field_1CCA, 25, 0);
+ sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, FALSE);
+ sub_80C4960(gUnknown_20399D8->field_1CCA, 25, FALSE);
}
gUnknown_20399D8->field_1CC8++;
}
@@ -1243,8 +1256,8 @@ bool8 sub_80C1478(void)
gUnknown_20399D8->field_1CCA = gUnknown_20399D8->field_1CCB;
sub_80C0CC8(0, gUnknown_20399D4->field_0026[gUnknown_20399D8->field_1CCA]);
CopyBgTilemapBufferToVram(0);
- sub_80C48BC(255, 25, 1);
- sub_80C4960(255, 25, 1);
+ sub_80C48BC(255, 25, TRUE);
+ sub_80C4960(255, 25, TRUE);
return TRUE;
}
if (r6)
@@ -1253,10 +1266,10 @@ bool8 sub_80C1478(void)
sub_80C4E74(gUnknown_8418EB0);
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(3);
- sub_80C48BC(255, 25, 1);
- sub_80C4960(255, 25, 1);
- sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, 0);
- sub_80C4960(gUnknown_20399D8->field_1CCA, 25, 0);
+ sub_80C48BC(255, 25, TRUE);
+ sub_80C4960(255, 25, TRUE);
+ sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, FALSE);
+ sub_80C4960(gUnknown_20399D8->field_1CCA, 25, FALSE);
}
if (gUnknown_20399D8->field_1CCA != sub_80C0E34())
sub_80C4324(TRUE);
@@ -1828,8 +1841,8 @@ void sub_80C267C(u8 taskId)
gUnknown_20399E0->field_CD0 = 15;
sub_80C253C();
sub_80C0A88(0);
- sub_80C48BC(sub_80C0E20(), 25, 0);
- sub_80C4960(sub_80C0E20(), 25, 0);
+ sub_80C48BC(sub_80C0E20(), 25, FALSE);
+ sub_80C4960(sub_80C0E20(), 25, FALSE);
gUnknown_20399E0->field_CCC++;
break;
case 9:
@@ -2002,8 +2015,8 @@ void sub_80C2C7C(u8 taskId)
sub_80C22C4(6, FALSE);
sub_80C4324(TRUE);
sub_80C3154(TRUE);
- sub_80C4960(255, 25, 1);
- sub_80C48BC(255, 25, 1);
+ sub_80C4960(255, 25, TRUE);
+ sub_80C48BC(255, 25, TRUE);
gUnknown_20399E0->field_CCE = 0;
gUnknown_20399E0->field_CD0 = 0;
gUnknown_20399E0->field_CCF++;
@@ -2935,9 +2948,9 @@ void sub_80C450C(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5)
LoadSpriteSheet(&spriteSheet);
LoadSpritePalette(&spritePalette);
spriteId = CreateSprite(&template, 8 * a2 + 36, 8 * a3 + 36, 1);
- gUnknown_20399EC->field_2D4[a1].field_4 = &gSprites[spriteId];
+ gUnknown_20399EC->field_2D0[a1].field_8 = &gSprites[spriteId];
gSprites[spriteId].invisible = TRUE;
- gUnknown_20399EC->field_2D4[a1].field_0 = a0;
+ gUnknown_20399EC->field_2D0[a1].field_4 = a0;
}
void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5)
@@ -2970,9 +2983,9 @@ void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5)
if ((sub_80C35DC(r4) == 2 || sub_80C35DC(r4) == 3) && r4 != MAPSEC_ROUTE_10_FLYDUP)
r7 = 2;
spriteId = CreateSprite(&template, 8 * a2 + 36 + r7, 8 * a3 + 36 + r7, 3);
- gUnknown_20399EC->field_144[a1].field_4 = &gSprites[spriteId];
+ gUnknown_20399EC->field_140[a1].field_8 = &gSprites[spriteId];
gSprites[spriteId].invisible = TRUE;
- gUnknown_20399EC->field_144[a1].field_0 = a0;
+ gUnknown_20399EC->field_140[a1].field_4 = a0;
}
void sub_80C4750(void)
@@ -3017,10 +3030,113 @@ void sub_80C47F0(void)
sub_80C4614(i, r6, k, j, r6 + 35, 10);
if (sub_80C3878(mapsec) != 2)
{
- StartSpriteAnim(gUnknown_20399EC->field_144[r6].field_4, 1);
+ StartSpriteAnim(gUnknown_20399EC->field_140[r6].field_8, 1);
}
r6++;
}
}
}
}
+
+void sub_80C48BC(u8 a0, u8 a1, bool8 a2)
+{
+ u8 i;
+ if (a1 == 25)
+ {
+ for (i = 0; i < 25; i++)
+ {
+ if (gUnknown_20399EC->field_2D0[i].field_4 == a0 || a0 == 0xFF)
+ gUnknown_20399EC->field_2D0[i].field_8->invisible = a2;
+ }
+ }
+ else
+ {
+ if (gUnknown_20399EC->field_2D0[a1].field_4 == a0)
+ gUnknown_20399EC->field_2D0[a1].field_8->invisible = a2;
+ }
+}
+
+void sub_80C4960(u8 a0, u8 a1, bool8 a2)
+{
+ u8 i;
+ if (a1 == 25)
+ {
+ for (i = 0; i < 25; i++)
+ {
+ if (gUnknown_20399EC->field_140[i].field_4 == a0 || a0 == 0xFF)
+ gUnknown_20399EC->field_140[i].field_8->invisible = a2;
+ }
+ }
+ else
+ {
+ if (gUnknown_20399EC->field_140[a1].field_4 != a0)
+ gUnknown_20399EC->field_140[a1].field_8->invisible = a2;
+ }
+}
+
+void sub_80C4A04(void)
+{
+ u8 i;
+ for (i = 0; i < 25; i++)
+ {
+ if (gUnknown_20399EC->field_2D0[i].field_8 != NULL)
+ {
+ DestroySprite(gUnknown_20399EC->field_2D0[i].field_8);
+ FreeSpriteTilesByTag(gUnknown_20399EC->field_2D0[i].field_C);
+ FreeSpritePaletteByTag(gUnknown_20399EC->field_2D0[i].field_E);
+ }
+ }
+ for (i = 0; i < 25; i++)
+ {
+ if (gUnknown_20399EC->field_140[i].field_8 != NULL)
+ {
+ DestroySprite(gUnknown_20399EC->field_140[i].field_8);
+ FreeSpriteTilesByTag(gUnknown_20399EC->field_140[i].field_C);
+ FreeSpritePaletteByTag(gUnknown_20399EC->field_140[i].field_E);
+ }
+ }
+ FREE_IF_NOT_NULL(gUnknown_20399EC);
+}
+
+bool8 sub_80C4AAC(u8 a0)
+{
+ if (gUnknown_20399F0[a0] != NULL)
+ return FALSE;
+ gUnknown_20399F0[a0] = AllocZeroed(sizeof(struct UnkStruct_20399F0));
+ gUnknown_20399F0[a0]->bldcnt = GetGpuReg(REG_OFFSET_BLDCNT);
+ gUnknown_20399F0[a0]->bldy = GetGpuReg(REG_OFFSET_BLDY);
+ gUnknown_20399F0[a0]->bldalpha = GetGpuReg(REG_OFFSET_BLDALPHA);
+ gUnknown_20399F0[a0]->winin = GetGpuReg(REG_OFFSET_WININ);
+ gUnknown_20399F0[a0]->winout = GetGpuReg(REG_OFFSET_WINOUT);
+ gUnknown_20399F0[a0]->win0h = GetGpuReg(REG_OFFSET_WIN0H);
+ gUnknown_20399F0[a0]->win1h = GetGpuReg(REG_OFFSET_WIN1H);
+ gUnknown_20399F0[a0]->win0v = GetGpuReg(REG_OFFSET_WIN0V);
+ gUnknown_20399F0[a0]->win1v = GetGpuReg(REG_OFFSET_WIN1V);
+ return TRUE;
+}
+
+bool8 sub_80C4B30(u8 a0)
+{
+ if (gUnknown_20399F0[a0] == NULL)
+ return FALSE;
+ SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_20399F0[a0]->bldcnt);
+ SetGpuReg(REG_OFFSET_BLDY, gUnknown_20399F0[a0]->bldy);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_20399F0[a0]->bldalpha);
+ SetGpuReg(REG_OFFSET_WININ, gUnknown_20399F0[a0]->winin);
+ SetGpuReg(REG_OFFSET_WINOUT, gUnknown_20399F0[a0]->winout);
+ SetGpuReg(REG_OFFSET_WIN0H, gUnknown_20399F0[a0]->win0h);
+ SetGpuReg(REG_OFFSET_WIN1H, gUnknown_20399F0[a0]->win1h);
+ SetGpuReg(REG_OFFSET_WIN0V, gUnknown_20399F0[a0]->win0v);
+ SetGpuReg(REG_OFFSET_WIN1V, gUnknown_20399F0[a0]->win1v);
+ FREE_IF_NOT_NULL(gUnknown_20399F0[a0]);
+ return TRUE;
+}
+
+void sub_80C4BB8(void)
+{
+ u8 i;
+ for (i = 0; i < 3; i++)
+ {
+ FREE_IF_NOT_NULL(gUnknown_20399F0[i]);
+ }
+}