summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest_link_80C2020.s137
-rw-r--r--src/battle/contest_link_80C2020.c48
2 files changed, 48 insertions, 137 deletions
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s
index 84e185035..4d0f6281e 100644
--- a/asm/contest_link_80C2020.s
+++ b/asm/contest_link_80C2020.s
@@ -5,143 +5,6 @@
.text
- thumb_func_start sub_80C2144
-sub_80C2144: @ 80C2144
- push {r4-r7,lr}
- sub sp, 0x4
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- ldr r0, _080C220C @ =gUnknown_08D1977C
- mov r12, r0
- movs r5, 0
- ldr r1, _080C2210 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- ldr r6, _080C2214 @ =0x85000400
- movs r7, 0x85
- lsls r7, 24
-_080C2162:
- str r5, [sp]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _080C2162
- str r5, [sp]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r1, 0xC0
- lsls r1, 19
- mov r0, r12
- bl LZDecompressVram
- ldr r0, _080C2218 @ =gUnknown_08D1A490
- ldr r1, _080C221C @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _080C2220 @ =gUnknown_08D1A364
- ldr r1, _080C2224 @ =0x0600e000
- bl LZDecompressVram
- ldr r0, _080C2228 @ =gUnknown_08D1A250
- ldr r1, _080C222C @ =0x0600f000
- bl LZDecompressVram
- bl sub_80C37E4
- ldr r0, _080C2230 @ =gUnknown_08D1A618
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0
- bl LoadCompressedPalette
- ldr r0, _080C2234 @ =gWindowTemplate_81E6FA0
- bl LoadFontDefaultPalette
- movs r6, 0
-_080C21C0:
- lsls r5, r6, 24
- lsrs r5, 24
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80C3990
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80C39E4
- movs r5, 0
- lsls r1, r6, 1
- adds r2, r6, 0x1
- mov r12, r2
- lsls r4, 24
- asrs r7, r4, 24
- adds r1, r6
- lsls r1, 6
- lsls r4, r0, 24
-_080C21EC:
- ldr r6, _080C2238 @ =0x000060b2
- cmp r5, r7
- bge _080C21F4
- adds r6, 0x2
-_080C21F4:
- asrs r2, r4, 24
- adds r0, r2, 0
- cmp r2, 0
- bge _080C21FE
- negs r0, r2
-_080C21FE:
- cmp r5, r0
- bge _080C2240
- ldr r3, _080C223C @ =0x000060a4
- cmp r2, 0
- bge _080C2242
- adds r3, 0x2
- b _080C2242
- .align 2, 0
-_080C220C: .4byte gUnknown_08D1977C
-_080C2210: .4byte 0x040000d4
-_080C2214: .4byte 0x85000400
-_080C2218: .4byte gUnknown_08D1A490
-_080C221C: .4byte 0x0600d000
-_080C2220: .4byte gUnknown_08D1A364
-_080C2224: .4byte 0x0600e000
-_080C2228: .4byte gUnknown_08D1A250
-_080C222C: .4byte 0x0600f000
-_080C2230: .4byte gUnknown_08D1A618
-_080C2234: .4byte gWindowTemplate_81E6FA0
-_080C2238: .4byte 0x000060b2
-_080C223C: .4byte 0x000060a4
-_080C2240:
- ldr r3, _080C2264 @ =0x000060a2
-_080C2242:
- ldr r2, _080C2268 @ =0x0600c166
- adds r0, r1, r2
- strh r6, [r0]
- adds r2, 0x40
- adds r0, r1, r2
- strh r3, [r0]
- adds r1, 0x2
- adds r5, 0x1
- cmp r5, 0x9
- ble _080C21EC
- mov r6, r12
- cmp r6, 0x3
- ble _080C21C0
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C2264: .4byte 0x000060a2
-_080C2268: .4byte 0x0600c166
- thumb_func_end sub_80C2144
-
thumb_func_start sub_80C226C
sub_80C226C: @ 80C226C
push {r4-r7,lr}
diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c
index 1656d2276..5e3cc3cce 100644
--- a/src/battle/contest_link_80C2020.c
+++ b/src/battle/contest_link_80C2020.c
@@ -1,10 +1,18 @@
#include "global.h"
+#include "decompress.h"
+#include "palette.h"
+#include "graphics.h"
#include "text.h"
#include "menu.h"
#include "battle.h"
#include "contest.h"
#include "link.h"
+#define ABS(x) ((x) < 0 ? -(x) : (x))
+
+void sub_80C37E4(void);
+u8 sub_80C3990(u8 a0, u8 a5);
+s8 sub_80C39E4(u8 a0, u8 a5);
void sub_80C2020(void)
{
@@ -47,3 +55,43 @@ void sub_80C2020(void)
gBattle_WIN1H = 0;
gBattle_WIN1V = 0;
}
+
+void sub_80C2144(void)
+{
+ int i;
+ int j;
+ s8 r7;
+ s8 r4;
+ u16 r6;
+ u16 r3;
+
+ DmaFill32Large(3, 0, VRAM, VRAM_SIZE, 0x1000);
+ LZDecompressVram(gUnknown_08D1977C, BG_SCREEN_ADDR(0));
+ LZDecompressVram(gUnknown_08D1A490, BG_SCREEN_ADDR(26));
+ LZDecompressVram(gUnknown_08D1A364, BG_SCREEN_ADDR(28));
+ LZDecompressVram(gUnknown_08D1A250, BG_SCREEN_ADDR(30));
+ sub_80C37E4();
+ LoadCompressedPalette(gUnknown_08D1A618, 0, 0x200);
+ LoadFontDefaultPalette(&gWindowTemplate_81E6FA0);
+ for (i = 0; i < 4; i++)
+ {
+ r7 = sub_80C3990(i, 1);
+ r4 = sub_80C39E4(i, 1);
+ for (j = 0; j < 10; j++)
+ {
+ r6 = 0x60b2;
+ if (j < r7)
+ r6 = 0x60b4;
+ if (j < ABS(r4))
+ {
+ r3 = 0x60a4;
+ if (r4 < 0)
+ r3 = 0x60a6;
+ }
+ else
+ r3 = 0x60a2;
+ ((u16 *)BG_VRAM)[i * 0x60 + j + 0x60b3] = r6;
+ ((u16 *)BG_VRAM)[i * 0x60 + j + 0x60d3] = r3;
+ }
+ }
+}