summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-10-22 18:51:20 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-10-22 18:51:20 -0500
commitbd344c1390ee9e0bbcfdb4aac5250a37e574a05f (patch)
treeb388f99a256d0f73108ddf715a82bf6473c11415
parent0d8c76cf7a6d3e44d128e17c800c4e97d8b73ee0 (diff)
Decompile more of main
-rwxr-xr-xasm/high_scores.s22
-rwxr-xr-xasm/rom_11B9C.s112
-rwxr-xr-xasm/rom_9BC.s449
-rwxr-xr-xdata/rom.s533
-rwxr-xr-xinclude/main.h15
-rwxr-xr-xsrc/main.c289
-rwxr-xr-xsrc/rom_850.c16
-rwxr-xr-xsrc/util.c2
-rwxr-xr-xsym_ewram.txt13
9 files changed, 918 insertions, 533 deletions
diff --git a/asm/high_scores.s b/asm/high_scores.s
index b85c26b..95fc366 100755
--- a/asm/high_scores.s
+++ b/asm/high_scores.s
@@ -5114,7 +5114,7 @@ sub_F74C: @ 0x0800F74C
ldr r1, _0800F85C @ =0x0200B134
str r1, [sp]
_0800F760:
- bl sub_C00
+ bl Random
movs r1, #0x2a
bl __umodsi3
lsls r0, r0, #0x18
@@ -5136,14 +5136,14 @@ _0800F760:
adds r6, #0xe8
movs r5, #2
_0800F78E:
- bl sub_C00
+ bl Random
movs r1, #0xa
bl __umodsi3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #7
bhi _0800F7AE
- bl sub_C00
+ bl Random
movs r1, #0x2a
bl __umodsi3
lsls r0, r0, #0x18
@@ -5153,9 +5153,9 @@ _0800F7AE:
subs r5, #1
cmp r5, #0
bge _0800F78E
- bl sub_C00
+ bl Random
adds r7, r0, #0
- bl sub_C00
+ bl Random
adds r6, r0, #0
mov r0, sb
add r0, r8
@@ -5173,7 +5173,7 @@ _0800F7AE:
str r2, [sp, #4]
mov sl, r0
_0800F7E0:
- bl sub_C00
+ bl Random
movs r1, #0x2a
bl __umodsi3
lsls r0, r0, #0x18
@@ -5198,14 +5198,14 @@ _0800F7E0:
adds r1, r1, r0
mov sb, r1
_0800F814:
- bl sub_C00
+ bl Random
movs r1, #0xa
bl __umodsi3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #7
bhi _0800F834
- bl sub_C00
+ bl Random
movs r1, #0x2a
bl __umodsi3
lsls r0, r0, #0x18
@@ -5219,20 +5219,20 @@ _0800F834:
subs r5, #1
cmp r5, #0
bge _0800F814
- bl sub_C00
+ bl Random
adds r1, r7, #0
bl __umodsi3
adds r7, r0, #0
cmp r7, #0
beq _0800F868
- bl sub_C00
+ bl Random
b _0800F872
.align 2, 0
_0800F85C: .4byte 0x0200B134
_0800F860: .4byte 0x0200B218
_0800F864: .4byte 0x0200B22C
_0800F868:
- bl sub_C00
+ bl Random
adds r1, r6, #0
bl __umodsi3
_0800F872:
diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s
index 7252b58..ab35f66 100755
--- a/asm/rom_11B9C.s
+++ b/asm/rom_11B9C.s
@@ -14593,7 +14593,7 @@ _0801905E:
ldrh r0, [r4, #0x30]
cmp r0, #0
bne _0801908E
- bl sub_C00
+ bl Random
ldr r1, [r4, #0x4c]
adds r0, r0, r1
movs r1, #0x1e
@@ -16316,7 +16316,7 @@ sub_19E10: @ 0x08019E10
lsls r0, r0, #0x10
cmp r0, #0
bne _08019E4E
- bl sub_C00
+ bl Random
ldr r4, [r4]
ldr r1, _08019EA8 @ =gMain
ldr r1, [r1, #0x4c]
@@ -25879,7 +25879,7 @@ _0801EB00:
ldr r0, _0801EBF8 @ =0x000009C3
cmp r8, r0
bgt _0801EBCA
- bl sub_C00
+ bl Random
mov r5, sl
ldr r2, [r5]
movs r1, #3
@@ -40206,7 +40206,7 @@ sub_25F64: @ 0x08025F64
ldr r0, [r5]
adds r0, #0x36
strb r3, [r0]
- bl sub_C00
+ bl Random
ldr r4, [r5]
ldr r6, _08026084 @ =gMain
ldr r1, [r6, #0x4c]
@@ -42384,7 +42384,7 @@ _0802712C:
asrs r0, r0, #0x10
cmp r0, #7
ble _0802712C
- bl sub_C00
+ bl Random
ldr r1, _080271F8 @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -42421,7 +42421,7 @@ _08027176:
cmp r0, #6
ble _08027176
_0802718E:
- bl sub_C00
+ bl Random
ldr r1, _080271F8 @ =gMain
ldr r1, [r1, #0x4c]
adds r2, r0, r1
@@ -42453,7 +42453,7 @@ _080271B4:
cmp r0, #5
ble _080271B4
_080271CC:
- bl sub_C00
+ bl Random
ldr r1, _080271F8 @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -42494,7 +42494,7 @@ _0802720E:
asrs r0, r0, #0x10
cmp r0, #7
ble _0802720E
- bl sub_C00
+ bl Random
ldr r1, _0802737C @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -42531,7 +42531,7 @@ _08027258:
cmp r0, #6
ble _08027258
_08027270:
- bl sub_C00
+ bl Random
ldr r1, _0802737C @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -42567,7 +42567,7 @@ _080272A0:
cmp r0, #5
ble _080272A0
_080272B8:
- bl sub_C00
+ bl Random
ldr r1, _0802737C @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -42629,7 +42629,7 @@ _0802731A:
asrs r0, r0, #0x18
cmp r0, #5
bne _08027356
- bl sub_C00
+ bl Random
ldr r1, _0802737C @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -47003,7 +47003,7 @@ _08029670:
ldr r0, _08029704 @ =0x000005C2
adds r1, r1, r0
strh r2, [r1]
- bl sub_C00
+ bl Random
ldr r4, [r7]
adds r4, r4, r6
movs r1, #0xc8
@@ -47015,7 +47015,7 @@ _08029670:
lsls r2, r2, #3
adds r4, r4, r2
strh r1, [r4]
- bl sub_C00
+ bl Random
ldr r4, [r7]
adds r4, r4, r6
ldr r1, _08029708 @ =0x00000226
@@ -47025,7 +47025,7 @@ _08029670:
ldr r0, _0802970C @ =0x000005DA
adds r4, r4, r0
strh r1, [r4]
- bl sub_C00
+ bl Random
ldr r4, [r7]
ldr r1, _08029710 @ =0x000005B9
adds r4, r4, r1
@@ -47357,7 +47357,7 @@ _0802993A:
ldr r2, _08029A3C @ =0x000005C2
adds r4, r4, r2
strh r0, [r4]
- bl sub_C00
+ bl Random
ldr r4, [r7]
adds r4, r4, r6
adds r1, r6, #0
@@ -47373,7 +47373,7 @@ _0802993A:
lsls r0, r0, #3
adds r4, r4, r0
strh r1, [r4]
- bl sub_C00
+ bl Random
ldr r4, [r7]
adds r4, r4, r6
ldr r1, _08029A40 @ =0x086AE2F6
@@ -47386,7 +47386,7 @@ _0802993A:
ldr r2, _08029A44 @ =0x000005DA
adds r4, r4, r2
strh r1, [r4]
- bl sub_C00
+ bl Random
ldr r1, [r7]
ldr r2, _08029A48 @ =0x000005B9
adds r1, r1, r2
@@ -48357,7 +48357,7 @@ _0802A170:
cmp r0, #0
beq _0802A1CA
_0802A182:
- bl sub_C00
+ bl Random
mov r1, sb
ldr r4, [r1]
movs r1, #0xc8
@@ -64178,7 +64178,7 @@ sub_3219C: @ 0x0803219C
beq _08032208
movs r0, #0
strb r0, [r4, #7]
- bl sub_C00
+ bl Random
ldr r1, [r4, #0x4c]
ldr r2, [r4, #0x50]
adds r1, r1, r2
@@ -64225,7 +64225,7 @@ _080321EA:
.align 2, 0
_08032204: .4byte 0x020314E0
_08032208:
- bl sub_C00
+ bl Random
ldr r1, [r4, #0x4c]
ldr r2, [r4, #0x50]
adds r1, r1, r2
@@ -64422,7 +64422,7 @@ _08032378:
ldrh r0, [r0]
cmp r0, #0
bne _08032454
- bl sub_C00
+ bl Random
ldr r2, _080323BC @ =gMain
ldr r1, [r2, #0x4c]
ldr r2, [r2, #0x50]
@@ -64457,7 +64457,7 @@ _080323C0:
bne _080323D2
movs r6, #1
_080323D2:
- bl sub_C00
+ bl Random
ldr r2, _08032474 @ =gMain
ldr r1, [r2, #0x4c]
ldr r2, [r2, #0x50]
@@ -64725,7 +64725,7 @@ _080325DC: .4byte 0x0000059E
thumb_func_start sub_325E0
sub_325E0: @ 0x080325E0
push {r4, r5, r6, lr}
- bl sub_C00
+ bl Random
ldr r3, _08032600 @ =gMain
ldr r1, [r3, #0x4c]
ldr r2, [r3, #0x50]
@@ -64785,7 +64785,7 @@ _08032640:
_08032650: .4byte 0x020314E0
_08032654: .4byte 0x0000059E
_08032658:
- bl sub_C00
+ bl Random
ldr r2, _080326E4 @ =gMain
ldr r1, [r2, #0x4c]
ldr r2, [r2, #0x50]
@@ -66982,7 +66982,7 @@ _080337E0:
movs r7, #0
mov r5, sl
strh r5, [r0]
- bl sub_C00
+ bl Random
ldr r1, _080338E0 @ =0x020314E0
ldr r4, [r1]
lsls r5, r6, #2
@@ -66996,7 +66996,7 @@ _080337E0:
lsls r3, r3, #2
adds r4, r4, r3
strh r0, [r4]
- bl sub_C00
+ bl Random
ldr r1, _080338E0 @ =0x020314E0
ldr r4, [r1]
adds r4, r4, r5
@@ -67009,7 +67009,7 @@ _080337E0:
mov sb, r2
add r4, sb
strh r1, [r4]
- bl sub_C00
+ bl Random
ldr r3, _080338E0 @ =0x020314E0
ldr r4, [r3]
movs r1, #0xef
@@ -67109,7 +67109,7 @@ _08033910:
adds r2, r2, r0
adds r2, r2, r4
strb r5, [r2]
- bl sub_C00
+ bl Random
b _08033FD8
.align 2, 0
_08033940: .4byte 0x020314E0
@@ -71612,7 +71612,7 @@ _08035DCC:
movs r0, #0xb4
lsls r0, r0, #1
strh r0, [r1]
- bl sub_C00
+ bl Random
mov r1, r8
ldr r3, [r1]
ldr r2, _08035E2C @ =0x086AE9E4
@@ -71793,7 +71793,7 @@ _08035F5E:
adds r0, r0, r1
movs r1, #5
strb r1, [r0]
- bl sub_C00
+ bl Random
ldr r1, _08035FEC @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -72575,7 +72575,7 @@ _080365CE:
movs r1, #5
strb r1, [r0]
_080365DC:
- bl sub_C00
+ bl Random
ldr r1, _08036618 @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -72693,7 +72693,7 @@ _080366BE:
movs r1, #5
strb r1, [r0]
_080366CC:
- bl sub_C00
+ bl Random
ldr r1, _08036708 @ =gMain
ldr r1, [r1, #0x4c]
adds r0, r0, r1
@@ -73147,7 +73147,7 @@ _08036A56:
adds r0, r0, r4
movs r1, #0x14
strh r1, [r0]
- bl sub_C00
+ bl Random
mov r5, r8
ldr r2, [r5]
ldr r1, _08036A94 @ =gMain
@@ -73211,7 +73211,7 @@ _08036ADA:
adds r0, r0, r5
movs r1, #0x14
strh r1, [r0]
- bl sub_C00
+ bl Random
mov r1, r8
ldr r2, [r1]
ldr r1, _08036B14 @ =gMain
@@ -74205,7 +74205,7 @@ _080372E0:
ldrh r5, [r0]
cmp r5, #0
bne _08037318
- bl sub_C00
+ bl Random
mov r1, sb
ldr r4, [r1]
ldr r1, _08037488 @ =0xFFFFEBC8
@@ -78200,7 +78200,7 @@ _08039350:
adds r1, r2, r0
movs r0, #0
strh r0, [r1]
- bl sub_C00
+ bl Random
ldr r4, [r5]
movs r1, #0x64
bl __umodsi3
@@ -78215,7 +78215,7 @@ _08039350:
lsls r3, r3, #2
adds r4, r4, r3
strh r0, [r4]
- bl sub_C00
+ bl Random
ldr r4, [r5]
movs r1, #0x64
bl __umodsi3
@@ -80010,7 +80010,7 @@ _0803A24C:
adds r0, r0, r7
movs r1, #2
strb r1, [r0]
- bl sub_C00
+ bl Random
mov r4, r8
ldr r5, [r4]
ldr r6, _0803A2C8 @ =0x00000443
@@ -80838,7 +80838,7 @@ _0803A8A2:
ldr r0, _0803AA40 @ =0x000009C3
cmp r8, r0
bgt _0803A9A6
- bl sub_C00
+ bl Random
ldr r5, [r4]
subs r6, #0x1b
adds r5, r5, r6
@@ -83297,7 +83297,7 @@ _0803BD30:
ldrsb r0, [r1, r0]
cmp r0, #0
beq _0803BDE0
- bl sub_C00
+ bl Random
ldr r4, [r5]
mov r2, sl
ldr r1, [r2, #0x4c]
@@ -85980,7 +85980,7 @@ _0803D354:
adds r0, r0, r2
ldrh r0, [r0]
strb r0, [r1]
- bl sub_C00
+ bl Random
ldr r4, [r6]
lsls r1, r5, #2
adds r4, r4, r1
@@ -86000,7 +86000,7 @@ _0803D354:
ldr r2, _0803D4C0 @ =0x000004EC
adds r4, r4, r2
strh r1, [r4]
- bl sub_C00
+ bl Random
ldr r2, [r6]
ldr r3, _0803D4C4 @ =0x000004CC
adds r2, r2, r3
@@ -88452,7 +88452,7 @@ sub_3E79C: @ 0x0803E79C
bge _0803E7C8
adds r5, r0, #0
_0803E7B4:
- bl sub_C00
+ bl Random
lsls r0, r4, #0x10
movs r1, #0x80
lsls r1, r1, #9
@@ -92168,7 +92168,7 @@ _08040610:
asrs r0, r0, #0x18
cmp r0, #0
beq _08040670
- bl sub_C00
+ bl Random
ldr r4, [r5]
movs r1, #0xa0
bl __umodsi3
@@ -92177,7 +92177,7 @@ _08040610:
ldr r2, _08040660 @ =0x0000051C
adds r4, r4, r2
strh r1, [r4]
- bl sub_C00
+ bl Random
ldr r5, [r5]
ldr r3, _08040664 @ =0x0000132C
adds r1, r5, r3
@@ -95482,7 +95482,7 @@ _080420CC:
lsls r5, r5, #4
adds r0, r4, r5
strh r1, [r0]
- bl sub_C00
+ bl Random
adds r5, r0, #0
movs r0, #7
ands r5, r0
@@ -95565,7 +95565,7 @@ _08042184:
ldr r5, _080422BC @ =0x00000E78
adds r0, r4, r5
strh r1, [r0]
- bl sub_C00
+ bl Random
movs r1, #7
ands r1, r0
adds r1, #8
@@ -97135,7 +97135,7 @@ sub_42E48: @ 0x08042E48
bge _08042E72
adds r4, r1, #0
_08042E5E:
- bl sub_C00
+ bl Random
lsls r0, r5, #0x10
movs r1, #0x80
lsls r1, r1, #9
@@ -98507,7 +98507,7 @@ _08043980:
_080439A4: .4byte 0x020314E0
_080439A8: .4byte 0x00000562
_080439AC:
- bl sub_C00
+ bl Random
adds r1, r0, #0
ldr r6, _08043A34 @ =gMain
ldr r0, [r6, #0x4c]
@@ -98621,7 +98621,7 @@ _08043A94: .4byte 0x020314E0
_08043A98: .4byte 0x0000055B
_08043A9C: .4byte 0x00000553
_08043AA0:
- bl sub_C00
+ bl Random
ldr r1, _08043AF8 @ =0x020314E0
ldr r2, [r1]
ldr r3, _08043AFC @ =0x00000551
@@ -98647,7 +98647,7 @@ _08043AA0:
asrs r0, r0, #0x18
cmp r0, #5
bne _08043B00
- bl sub_C00
+ bl Random
ldr r3, _08043AF8 @ =0x020314E0
ldr r4, [r3]
lsls r1, r5, #3
@@ -98665,7 +98665,7 @@ _08043AA0:
_08043AF8: .4byte 0x020314E0
_08043AFC: .4byte 0x00000551
_08043B00:
- bl sub_C00
+ bl Random
ldr r6, _08043B20 @ =0x020314E0
ldr r4, [r6]
lsls r1, r5, #3
@@ -98688,7 +98688,7 @@ _08043B24:
asrs r0, r0, #0x18
cmp r0, #5
bne _08043B58
- bl sub_C00
+ bl Random
ldr r1, _08043B54 @ =0x020314E0
ldr r4, [r1]
lsls r1, r5, #3
@@ -98704,7 +98704,7 @@ _08043B24:
.align 2, 0
_08043B54: .4byte 0x020314E0
_08043B58:
- bl sub_C00
+ bl Random
ldr r3, _08043BE0 @ =0x020314E0
ldr r4, [r3]
lsls r1, r5, #3
@@ -105738,7 +105738,7 @@ _080475D2:
adds r0, r4, r0
mov r1, r8
strh r1, [r0]
- bl sub_C00
+ bl Random
ldr r1, _0804764C @ =0x02030750
adds r4, r4, r1
movs r1, #0x1e
@@ -110784,7 +110784,7 @@ sub_49ED4: @ 0x08049ED4
bge _08049EFA
adds r4, r1, #0
_08049EE6:
- bl sub_C00
+ bl Random
lsls r0, r5, #0x10
movs r1, #0x80
lsls r1, r1, #9
diff --git a/asm/rom_9BC.s b/asm/rom_9BC.s
index 60f2560..fde21ba 100755
--- a/asm/rom_9BC.s
+++ b/asm/rom_9BC.s
@@ -4,447 +4,6 @@
.text
- thumb_func_start sub_B38
-sub_B38: @ 0x08000B38
- push {lr}
- bl sub_1F5C
- pop {r0}
- bx r0
-
- thumb_func_start sub_B44
-sub_B44: @ 0x08000B44
- push {lr}
- bl sub_1F4C
- pop {r0}
- bx r0
-
- thumb_func_start sub_B50
-sub_B50: @ 0x08000B50
- bx lr
-
- thumb_func_start sub_B54
-sub_B54: @ 0x08000B54
- push {lr}
- ldr r1, _08000B84 @ =0x04000204
- ldr r2, _08000B88 @ =0x000045B6
- adds r0, r2, #0
- strh r0, [r1]
- subs r1, #4
- movs r2, #0x80
- lsls r2, r2, #6
- adds r0, r2, #0
- strh r0, [r1]
- adds r1, #8
- movs r0, #1
- strh r0, [r1]
- bl sub_B8C
- bl m4aSoundInit
- bl m4aSoundVSyncOff
- bl sub_52A18
- pop {r0}
- bx r0
- .align 2, 0
-_08000B84: .4byte 0x04000204
-_08000B88: .4byte 0x000045B6
-
- thumb_func_start sub_B8C
-sub_B8C: @ 0x08000B8C
- push {lr}
- ldr r0, _08000BB8 @ =gMain
- movs r1, #0
- strb r1, [r0, #2]
- strb r1, [r0, #3]
- strh r1, [r0, #0x16]
- strh r1, [r0, #0x1c]
- strh r1, [r0, #0x18]
- strh r1, [r0, #0x20]
- str r1, [r0, #0x48]
- str r1, [r0, #0x4c]
- strh r1, [r0, #0x30]
- movs r2, #0x90
- strh r2, [r0, #0x26]
- strh r1, [r0, #0x2c]
- bl sub_1090C
- bl sub_438
- pop {r0}
- bx r0
- .align 2, 0
-_08000BB8: .4byte gMain
-
- thumb_func_start sub_BBC
-sub_BBC: @ 0x08000BBC
- push {r4, r5, r6, lr}
- ldr r5, _08000BF0 @ =0x0200FB98
- ldr r2, _08000BF4 @ =0x02003068
- ldr r6, _08000BF8 @ =0x02019BE0
- ldr r4, _08000BFC @ =0x086A4AA0
- adds r3, r2, #0
- subs r3, #8
- movs r1, #0xd
-_08000BCC:
- ldm r4!, {r0}
- stm r3!, {r0}
- subs r1, #1
- cmp r1, #0
- bge _08000BCC
- str r2, [r5]
- adds r0, r2, #0
- adds r0, #8
- str r0, [r6]
- bl sub_8BC
- bl sub_8FC
- bl sub_940
- pop {r4, r5, r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08000BF0: .4byte 0x0200FB98
-_08000BF4: .4byte 0x02003068
-_08000BF8: .4byte 0x02019BE0
-_08000BFC: .4byte 0x086A4AA0
-
- thumb_func_start sub_C00
-sub_C00: @ 0x08000C00
- ldr r2, _08000C14 @ =gMain
- ldr r1, [r2, #0x48]
- ldr r0, _08000C18 @ =0x41C64E6D
- muls r0, r1, r0
- ldr r1, _08000C1C @ =0x00003039
- adds r0, r0, r1
- str r0, [r2, #0x48]
- ldr r1, _08000C20 @ =0x0000FFFF
- ands r0, r1
- bx lr
- .align 2, 0
-_08000C14: .4byte gMain
-_08000C18: .4byte 0x41C64E6D
-_08000C1C: .4byte 0x00003039
-_08000C20: .4byte 0x0000FFFF
-
- thumb_func_start sub_C24
-sub_C24: @ 0x08000C24
- lsls r0, r0, #0x10
- lsrs r2, r0, #0x12
- movs r3, #1
- ldr r0, _08000C60 @ =0x00001FFF
- cmp r2, r0
- bls _08000C3A
- ldr r1, _08000C64 @ =0xFFFFE000
- adds r0, r2, r1
- lsls r0, r0, #0x10
- lsrs r2, r0, #0x10
- ldr r3, _08000C68 @ =0x0000FFFF
-_08000C3A:
- ldr r0, _08000C6C @ =0x00000FFF
- cmp r2, r0
- bls _08000C4C
- movs r1, #0x80
- lsls r1, r1, #6
- adds r0, r1, #0
- subs r0, r0, r2
- lsls r0, r0, #0x10
- lsrs r2, r0, #0x10
-_08000C4C:
- ldr r1, _08000C70 @ =0x08055C44
- lsls r0, r2, #1
- adds r0, r0, r1
- ldrh r1, [r0]
- lsls r0, r3, #0x10
- asrs r0, r0, #0x10
- muls r0, r1, r0
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- bx lr
- .align 2, 0
-_08000C60: .4byte 0x00001FFF
-_08000C64: .4byte 0xFFFFE000
-_08000C68: .4byte 0x0000FFFF
-_08000C6C: .4byte 0x00000FFF
-_08000C70: .4byte 0x08055C44
-
- thumb_func_start sub_C74
-sub_C74: @ 0x08000C74
- push {lr}
- lsls r0, r0, #0x10
- movs r1, #0x80
- lsls r1, r1, #0x17
- adds r0, r0, r1
- lsrs r0, r0, #0x10
- bl sub_C24
- lsls r0, r0, #0x10
- asrs r0, r0, #0x10
- pop {r1}
- bx r1
-
- thumb_func_start ReadKeys
-ReadKeys: @ 0x08000C8C
- push {r4, lr}
- ldr r0, _08000CB4 @ =0x04000130
- ldrh r2, [r0]
- mvns r2, r2
- lsls r2, r2, #0x10
- lsrs r2, r2, #0x10
- ldr r3, _08000CB8 @ =gMain
- ldrh r4, [r3, #0x1c]
- adds r1, r2, #0
- eors r1, r4
- adds r0, r2, #0
- ands r0, r1
- strh r0, [r3, #0x18]
- ands r1, r4
- strh r1, [r3, #0x1a]
- strh r2, [r3, #0x1c]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08000CB4: .4byte 0x04000130
-_08000CB8: .4byte gMain
-
- thumb_func_start sub_CBC
-sub_CBC: @ 0x08000CBC
- push {r4, lr}
- ldr r3, _08000CFC @ =0x04000200
- ldrh r1, [r3]
- movs r4, #1
- adds r0, r4, #0
- ands r0, r1
- cmp r0, #0
- bne _08000CF6
- ldr r1, _08000D00 @ =0x04000202
- ldrh r0, [r1]
- movs r2, #5
- orrs r0, r2
- strh r0, [r1]
- ldrh r1, [r3]
- ldr r0, _08000D04 @ =0x00003FFF
- ands r0, r1
- strh r0, [r3]
- ldr r0, _08000D08 @ =0x04000208
- strh r4, [r0]
- ldrh r0, [r3]
- orrs r0, r2
- strh r0, [r3]
- ldr r2, _08000D0C @ =0x04000004
- ldrh r0, [r2]
- movs r1, #8
- orrs r0, r1
- strh r0, [r2]
- bl m4aSoundVSyncOn
-_08000CF6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08000CFC: .4byte 0x04000200
-_08000D00: .4byte 0x04000202
-_08000D04: .4byte 0x00003FFF
-_08000D08: .4byte 0x04000208
-_08000D0C: .4byte 0x04000004
-
- thumb_func_start sub_D10
-sub_D10: @ 0x08000D10
- push {lr}
- ldr r1, _08000D54 @ =0x04000004
- ldrh r2, [r1]
- ldr r0, _08000D58 @ =0x0000FFF7
- ands r0, r2
- strh r0, [r1]
- ldrh r2, [r1]
- ldr r0, _08000D5C @ =0x0000FFDF
- ands r0, r2
- strh r0, [r1]
- ldr r1, _08000D60 @ =0x04000200
- ldrh r2, [r1]
- ldr r0, _08000D64 @ =0x00003FFF
- ands r0, r2
- strh r0, [r1]
- ldrh r2, [r1]
- ldr r0, _08000D68 @ =0x00003FFE
- ands r0, r2
- strh r0, [r1]
- ldrh r0, [r1]
- adds r1, r0, #0
- cmp r1, #0
- bne _08000D42
- ldr r0, _08000D6C @ =0x04000208
- strh r1, [r0]
-_08000D42:
- ldr r0, _08000D70 @ =0x04000202
- ldrh r1, [r0]
- movs r2, #1
- orrs r1, r2
- strh r1, [r0]
- bl m4aSoundVSyncOff
- pop {r0}
- bx r0
- .align 2, 0
-_08000D54: .4byte 0x04000004
-_08000D58: .4byte 0x0000FFF7
-_08000D5C: .4byte 0x0000FFDF
-_08000D60: .4byte 0x04000200
-_08000D64: .4byte 0x00003FFF
-_08000D68: .4byte 0x00003FFE
-_08000D6C: .4byte 0x04000208
-_08000D70: .4byte 0x04000202
-
- thumb_func_start sub_D74
-sub_D74: @ 0x08000D74
- push {lr}
- ldr r2, _08000DA8 @ =0x0200FB9C
- ldr r0, _08000DAC @ =0x02017BD4
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, _08000DB0 @ =0x0200FB98
- ldr r1, [r0]
- ldr r0, _08000DB4 @ =0x02017BD0
- ldr r0, [r0]
- str r0, [r1]
- ldr r0, _08000DB8 @ =0x02019BE0
- ldr r1, [r0]
- ldr r0, _08000DBC @ =0x0200FBA0
- ldr r0, [r0]
- str r0, [r1]
- ldr r2, [r2]
- cmp r2, #0
- beq _08000D9C
- bl _call_via_r2
-_08000D9C:
- ldr r1, _08000DC0 @ =gMain
- ldr r0, [r1, #0x4c]
- adds r0, #1
- str r0, [r1, #0x4c]
- pop {r0}
- bx r0
- .align 2, 0
-_08000DA8: .4byte 0x0200FB9C
-_08000DAC: .4byte 0x02017BD4
-_08000DB0: .4byte 0x0200FB98
-_08000DB4: .4byte 0x02017BD0
-_08000DB8: .4byte 0x02019BE0
-_08000DBC: .4byte 0x0200FBA0
-_08000DC0: .4byte gMain
-
- thumb_func_start sub_DC4
-sub_DC4: @ 0x08000DC4
- push {r4, lr}
- ldr r4, _08000E7C @ =0x04000004
- ldrh r1, [r4]
- movs r0, #8
- ands r0, r1
- cmp r0, #0
- beq _08000E76
- bl VBlankIntrWait
- ldr r1, _08000E80 @ =0x040000D4
- ldr r0, _08000E84 @ =gOamBuffer
- str r0, [r1]
- movs r0, #0xe0
- lsls r0, r0, #0x13
- str r0, [r1, #4]
- ldr r0, _08000E88 @ =0x84000100
- str r0, [r1, #8]
- ldr r0, [r1, #8]
- subs r1, #0xd4
- ldr r2, _08000E8C @ =gMain
- ldrh r0, [r2, #0x16]
- strh r0, [r1]
- adds r1, #0x10
- movs r3, #0xba
- lsls r3, r3, #2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, #2
- adds r3, #2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, #2
- adds r3, #2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, #2
- adds r3, #2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, #2
- adds r3, #2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, #2
- adds r3, #2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, #2
- adds r3, #2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, #2
- adds r3, #2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, #0
- adds r0, #0x36
- ldrb r0, [r0]
- cmp r0, #0
- beq _08000E5E
- adds r1, #0x32
- ldrh r0, [r2, #0x38]
- strh r0, [r1]
- adds r1, #2
- ldrh r0, [r2, #0x3a]
- strh r0, [r1]
- adds r1, #2
- ldrh r0, [r2, #0x3c]
- strh r0, [r1]
-_08000E5E:
- ldrh r1, [r4]
- movs r0, #0xff
- ands r0, r1
- strh r0, [r4]
- ldrh r0, [r2, #0x26]
- lsls r0, r0, #8
- adds r0, #0x20
- ldrh r1, [r4]
- orrs r0, r1
- strh r0, [r4]
- bl m4aSoundMain
-_08000E76:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08000E7C: .4byte 0x04000004
-_08000E80: .4byte 0x040000D4
-_08000E84: .4byte gOamBuffer
-_08000E88: .4byte 0x84000100
-_08000E8C: .4byte gMain
-
- thumb_func_start sub_E90
-sub_E90: @ 0x08000E90
- ldr r0, _08000EA8 @ =0x04000130
- ldrh r0, [r0]
- ldr r2, _08000EAC @ =0x000003FF
- adds r1, r2, #0
- eors r1, r0
- ldr r3, _08000EB0 @ =0x02002002
- ldr r2, _08000EB4 @ =0x02002000
- ldrh r0, [r2]
- strh r0, [r3]
- strh r1, [r2]
- bx lr
- .align 2, 0
-_08000EA8: .4byte 0x04000130
-_08000EAC: .4byte 0x000003FF
-_08000EB0: .4byte 0x02002002
-_08000EB4: .4byte 0x02002000
-
thumb_func_start sub_EB8
sub_EB8: @ 0x08000EB8
push {r4, r5, r6, r7, lr}
@@ -784,15 +343,15 @@ _08001196:
thumb_func_start sub_1198
sub_1198: @ 0x08001198
ldr r0, _080011A4 @ =0x02003060
- ldr r1, _080011A8 @ =sub_B38 + 1
+ ldr r1, _080011A8 @ =SerialIntr + 1
str r1, [r0]
- ldr r1, _080011AC @ =sub_B44 + 1
+ ldr r1, _080011AC @ =Timer3Intr + 1
str r1, [r0, #4]
bx lr
.align 2, 0
_080011A4: .4byte 0x02003060
-_080011A8: .4byte sub_B38 + 1
-_080011AC: .4byte sub_B44 + 1
+_080011A8: .4byte SerialIntr + 1
+_080011AC: .4byte Timer3Intr + 1
thumb_func_start sub_11B0
sub_11B0: @ 0x080011B0
diff --git a/data/rom.s b/data/rom.s
index e4e6170..a2bf679 100755
--- a/data/rom.s
+++ b/data/rom.s
@@ -7,7 +7,520 @@
.include "data/mon_locations.inc"
-.incbin "baserom.gba", 0x55C44, 0x57C46 - 0x55C44
+gUnknown_08055C44:: @ 0x08055C44
+ .2byte 0x0000, 0x0007, 0x000F, 0x0017, 0x001E, 0x0026, 0x002E, 0x0035
+ .2byte 0x003D, 0x0045, 0x004C, 0x0054, 0x005C, 0x0063, 0x006B, 0x0073
+ .2byte 0x007A, 0x0082, 0x008A, 0x0091, 0x0099, 0x00A1, 0x00A8, 0x00B0
+ .2byte 0x00B8, 0x00BF, 0x00C7, 0x00CF, 0x00D6, 0x00DE, 0x00E6, 0x00ED
+ .2byte 0x00F5, 0x00FD, 0x0104, 0x010C, 0x0114, 0x011B, 0x0123, 0x012B
+ .2byte 0x0132, 0x013A, 0x0142, 0x0149, 0x0151, 0x0159, 0x0160, 0x0168
+ .2byte 0x0170, 0x0177, 0x017F, 0x0187, 0x018E, 0x0196, 0x019E, 0x01A5
+ .2byte 0x01AD, 0x01B5, 0x01BC, 0x01C4, 0x01CC, 0x01D3, 0x01DB, 0x01E3
+ .2byte 0x01EA, 0x01F2, 0x01FA, 0x0201, 0x0209, 0x0211, 0x0218, 0x0220
+ .2byte 0x0228, 0x022F, 0x0237, 0x023F, 0x0246, 0x024E, 0x0256, 0x025D
+ .2byte 0x0265, 0x026D, 0x0274, 0x027C, 0x0284, 0x028B, 0x0293, 0x029B
+ .2byte 0x02A2, 0x02AA, 0x02B2, 0x02B9, 0x02C1, 0x02C9, 0x02D0, 0x02D8
+ .2byte 0x02E0, 0x02E7, 0x02EF, 0x02F7, 0x02FE, 0x0306, 0x030E, 0x0315
+ .2byte 0x031D, 0x0325, 0x032C, 0x0334, 0x033C, 0x0343, 0x034B, 0x0353
+ .2byte 0x035A, 0x0362, 0x036A, 0x0371, 0x0379, 0x0381, 0x0388, 0x0390
+ .2byte 0x0398, 0x039F, 0x03A7, 0x03AF, 0x03B6, 0x03BE, 0x03C6, 0x03CD
+ .2byte 0x03D5, 0x03DD, 0x03E4, 0x03EC, 0x03F3, 0x03FB, 0x0403, 0x040A
+ .2byte 0x0412, 0x041A, 0x0421, 0x0429, 0x0431, 0x0438, 0x0440, 0x0448
+ .2byte 0x044F, 0x0457, 0x045F, 0x0466, 0x046E, 0x0476, 0x047D, 0x0485
+ .2byte 0x048D, 0x0494, 0x049C, 0x04A4, 0x04AB, 0x04B3, 0x04BB, 0x04C2
+ .2byte 0x04CA, 0x04D2, 0x04D9, 0x04E1, 0x04E9, 0x04F0, 0x04F8, 0x04FF
+ .2byte 0x0507, 0x050F, 0x0516, 0x051E, 0x0526, 0x052D, 0x0535, 0x053D
+ .2byte 0x0544, 0x054C, 0x0554, 0x055B, 0x0563, 0x056B, 0x0572, 0x057A
+ .2byte 0x0582, 0x0589, 0x0591, 0x0599, 0x05A0, 0x05A8, 0x05AF, 0x05B7
+ .2byte 0x05BF, 0x05C6, 0x05CE, 0x05D6, 0x05DD, 0x05E5, 0x05ED, 0x05F4
+ .2byte 0x05FC, 0x0604, 0x060B, 0x0613, 0x061B, 0x0622, 0x062A, 0x0632
+ .2byte 0x0639, 0x0641, 0x0648, 0x0650, 0x0658, 0x065F, 0x0667, 0x066F
+ .2byte 0x0676, 0x067E, 0x0686, 0x068D, 0x0695, 0x069D, 0x06A4, 0x06AC
+ .2byte 0x06B3, 0x06BB, 0x06C3, 0x06CA, 0x06D2, 0x06DA, 0x06E1, 0x06E9
+ .2byte 0x06F1, 0x06F8, 0x0700, 0x0707, 0x070F, 0x0717, 0x071E, 0x0726
+ .2byte 0x072E, 0x0735, 0x073D, 0x0745, 0x074C, 0x0754, 0x075B, 0x0763
+ .2byte 0x076B, 0x0772, 0x077A, 0x0782, 0x0789, 0x0791, 0x0799, 0x07A0
+ .2byte 0x07A8, 0x07AF, 0x07B7, 0x07BF, 0x07C6, 0x07CE, 0x07D6, 0x07DD
+ .2byte 0x07E5, 0x07ED, 0x07F4, 0x07FC, 0x0803, 0x080B, 0x0813, 0x081A
+ .2byte 0x0822, 0x082A, 0x0831, 0x0839, 0x0840, 0x0848, 0x0850, 0x0857
+ .2byte 0x085F, 0x0867, 0x086E, 0x0876, 0x087D, 0x0885, 0x088D, 0x0894
+ .2byte 0x089C, 0x08A4, 0x08AB, 0x08B3, 0x08BA, 0x08C2, 0x08CA, 0x08D1
+ .2byte 0x08D9, 0x08E1, 0x08E8, 0x08F0, 0x08F7, 0x08FF, 0x0907, 0x090E
+ .2byte 0x0916, 0x091D, 0x0925, 0x092D, 0x0934, 0x093C, 0x0944, 0x094B
+ .2byte 0x0953, 0x095A, 0x0962, 0x096A, 0x0971, 0x0979, 0x0980, 0x0988
+ .2byte 0x0990, 0x0997, 0x099F, 0x09A7, 0x09AE, 0x09B6, 0x09BD, 0x09C5
+ .2byte 0x09CD, 0x09D4, 0x09DC, 0x09E3, 0x09EB, 0x09F3, 0x09FA, 0x0A02
+ .2byte 0x0A09, 0x0A11, 0x0A19, 0x0A20, 0x0A28, 0x0A2F, 0x0A37, 0x0A3F
+ .2byte 0x0A46, 0x0A4E, 0x0A56, 0x0A5D, 0x0A65, 0x0A6C, 0x0A74, 0x0A7C
+ .2byte 0x0A83, 0x0A8B, 0x0A92, 0x0A9A, 0x0AA2, 0x0AA9, 0x0AB1, 0x0AB8
+ .2byte 0x0AC0, 0x0AC7, 0x0ACF, 0x0AD7, 0x0ADE, 0x0AE6, 0x0AED, 0x0AF5
+ .2byte 0x0AFD, 0x0B04, 0x0B0C, 0x0B13, 0x0B1B, 0x0B23, 0x0B2A, 0x0B32
+ .2byte 0x0B39, 0x0B41, 0x0B49, 0x0B50, 0x0B58, 0x0B5F, 0x0B67, 0x0B6F
+ .2byte 0x0B76, 0x0B7E, 0x0B85, 0x0B8D, 0x0B94, 0x0B9C, 0x0BA4, 0x0BAB
+ .2byte 0x0BB3, 0x0BBA, 0x0BC2, 0x0BCA, 0x0BD1, 0x0BD9, 0x0BE0, 0x0BE8
+ .2byte 0x0BEF, 0x0BF7, 0x0BFF, 0x0C06, 0x0C0E, 0x0C15, 0x0C1D, 0x0C24
+ .2byte 0x0C2C, 0x0C34, 0x0C3B, 0x0C43, 0x0C4A, 0x0C52, 0x0C5A, 0x0C61
+ .2byte 0x0C69, 0x0C70, 0x0C78, 0x0C7F, 0x0C87, 0x0C8F, 0x0C96, 0x0C9E
+ .2byte 0x0CA5, 0x0CAD, 0x0CB4, 0x0CBC, 0x0CC3, 0x0CCB, 0x0CD3, 0x0CDA
+ .2byte 0x0CE2, 0x0CE9, 0x0CF1, 0x0CF8, 0x0D00, 0x0D08, 0x0D0F, 0x0D17
+ .2byte 0x0D1E, 0x0D26, 0x0D2D, 0x0D35, 0x0D3D, 0x0D44, 0x0D4C, 0x0D53
+ .2byte 0x0D5B, 0x0D62, 0x0D6A, 0x0D71, 0x0D79, 0x0D81, 0x0D88, 0x0D90
+ .2byte 0x0D97, 0x0D9F, 0x0DA6, 0x0DAE, 0x0DB5, 0x0DBD, 0x0DC4, 0x0DCC
+ .2byte 0x0DD4, 0x0DDB, 0x0DE3, 0x0DEA, 0x0DF2, 0x0DF9, 0x0E01, 0x0E08
+ .2byte 0x0E10, 0x0E18, 0x0E1F, 0x0E27, 0x0E2E, 0x0E36, 0x0E3D, 0x0E45
+ .2byte 0x0E4C, 0x0E54, 0x0E5B, 0x0E63, 0x0E6A, 0x0E72, 0x0E7A, 0x0E81
+ .2byte 0x0E89, 0x0E90, 0x0E98, 0x0E9F, 0x0EA7, 0x0EAE, 0x0EB6, 0x0EBD
+ .2byte 0x0EC5, 0x0ECC, 0x0ED4, 0x0EDB, 0x0EE3, 0x0EEB, 0x0EF2, 0x0EFA
+ .2byte 0x0F01, 0x0F09, 0x0F10, 0x0F18, 0x0F1F, 0x0F27, 0x0F2E, 0x0F36
+ .2byte 0x0F3D, 0x0F45, 0x0F4C, 0x0F54, 0x0F5B, 0x0F63, 0x0F6A, 0x0F72
+ .2byte 0x0F79, 0x0F81, 0x0F89, 0x0F90, 0x0F98, 0x0F9F, 0x0FA7, 0x0FAE
+ .2byte 0x0FB6, 0x0FBD, 0x0FC5, 0x0FCC, 0x0FD4, 0x0FDB, 0x0FE3, 0x0FEA
+ .2byte 0x0FF2, 0x0FF9, 0x1001, 0x1008, 0x1010, 0x1017, 0x101F, 0x1026
+ .2byte 0x102E, 0x1035, 0x103D, 0x1044, 0x104C, 0x1053, 0x105B, 0x1062
+ .2byte 0x106A, 0x1071, 0x1079, 0x1080, 0x1088, 0x108F, 0x1097, 0x109E
+ .2byte 0x10A6, 0x10AD, 0x10B5, 0x10BC, 0x10C4, 0x10CB, 0x10D3, 0x10DA
+ .2byte 0x10E2, 0x10E9, 0x10F1, 0x10F8, 0x1100, 0x1107, 0x110F, 0x1116
+ .2byte 0x111E, 0x1125, 0x112C, 0x1134, 0x113B, 0x1143, 0x114A, 0x1152
+ .2byte 0x1159, 0x1161, 0x1168, 0x1170, 0x1177, 0x117F, 0x1186, 0x118E
+ .2byte 0x1195, 0x119D, 0x11A4, 0x11AC, 0x11B3, 0x11BB, 0x11C2, 0x11C9
+ .2byte 0x11D1, 0x11D8, 0x11E0, 0x11E7, 0x11EF, 0x11F6, 0x11FE, 0x1205
+ .2byte 0x120D, 0x1214, 0x121C, 0x1223, 0x122B, 0x1232, 0x1239, 0x1241
+ .2byte 0x1248, 0x1250, 0x1257, 0x125F, 0x1266, 0x126E, 0x1275, 0x127D
+ .2byte 0x1284, 0x128B, 0x1293, 0x129A, 0x12A2, 0x12A9, 0x12B1, 0x12B8
+ .2byte 0x12C0, 0x12C7, 0x12CE, 0x12D6, 0x12DD, 0x12E5, 0x12EC, 0x12F4
+ .2byte 0x12FB, 0x1303, 0x130A, 0x1311, 0x1319, 0x1320, 0x1328, 0x132F
+ .2byte 0x1337, 0x133E, 0x1345, 0x134D, 0x1354, 0x135C, 0x1363, 0x136B
+ .2byte 0x1372, 0x1379, 0x1381, 0x1388, 0x1390, 0x1397, 0x139F, 0x13A6
+ .2byte 0x13AD, 0x13B5, 0x13BC, 0x13C4, 0x13CB, 0x13D3, 0x13DA, 0x13E1
+ .2byte 0x13E9, 0x13F0, 0x13F8, 0x13FF, 0x1406, 0x140E, 0x1415, 0x141D
+ .2byte 0x1424, 0x142C, 0x1433, 0x143A, 0x1442, 0x1449, 0x1451, 0x1458
+ .2byte 0x145F, 0x1467, 0x146E, 0x1476, 0x147D, 0x1484, 0x148C, 0x1493
+ .2byte 0x149B, 0x14A2, 0x14A9, 0x14B1, 0x14B8, 0x14C0, 0x14C7, 0x14CE
+ .2byte 0x14D6, 0x14DD, 0x14E5, 0x14EC, 0x14F3, 0x14FB, 0x1502, 0x1509
+ .2byte 0x1511, 0x1518, 0x1520, 0x1527, 0x152E, 0x1536, 0x153D, 0x1545
+ .2byte 0x154C, 0x1553, 0x155B, 0x1562, 0x1569, 0x1571, 0x1578, 0x1580
+ .2byte 0x1587, 0x158E, 0x1596, 0x159D, 0x15A4, 0x15AC, 0x15B3, 0x15BB
+ .2byte 0x15C2, 0x15C9, 0x15D1, 0x15D8, 0x15DF, 0x15E7, 0x15EE, 0x15F5
+ .2byte 0x15FD, 0x1604, 0x160C, 0x1613, 0x161A, 0x1622, 0x1629, 0x1630
+ .2byte 0x1638, 0x163F, 0x1646, 0x164E, 0x1655, 0x165C, 0x1664, 0x166B
+ .2byte 0x1672, 0x167A, 0x1681, 0x1688, 0x1690, 0x1697, 0x169F, 0x16A6
+ .2byte 0x16AD, 0x16B5, 0x16BC, 0x16C3, 0x16CB, 0x16D2, 0x16D9, 0x16E1
+ .2byte 0x16E8, 0x16EF, 0x16F7, 0x16FE, 0x1705, 0x170D, 0x1714, 0x171B
+ .2byte 0x1723, 0x172A, 0x1731, 0x1738, 0x1740, 0x1747, 0x174E, 0x1756
+ .2byte 0x175D, 0x1764, 0x176C, 0x1773, 0x177A, 0x1782, 0x1789, 0x1790
+ .2byte 0x1798, 0x179F, 0x17A6, 0x17AE, 0x17B5, 0x17BC, 0x17C3, 0x17CB
+ .2byte 0x17D2, 0x17D9, 0x17E1, 0x17E8, 0x17EF, 0x17F7, 0x17FE, 0x1805
+ .2byte 0x180C, 0x1814, 0x181B, 0x1822, 0x182A, 0x1831, 0x1838, 0x1840
+ .2byte 0x1847, 0x184E, 0x1855, 0x185D, 0x1864, 0x186B, 0x1873, 0x187A
+ .2byte 0x1881, 0x1888, 0x1890, 0x1897, 0x189E, 0x18A6, 0x18AD, 0x18B4
+ .2byte 0x18BB, 0x18C3, 0x18CA, 0x18D1, 0x18D8, 0x18E0, 0x18E7, 0x18EE
+ .2byte 0x18F6, 0x18FD, 0x1904, 0x190B, 0x1913, 0x191A, 0x1921, 0x1928
+ .2byte 0x1930, 0x1937, 0x193E, 0x1945, 0x194D, 0x1954, 0x195B, 0x1962
+ .2byte 0x196A, 0x1971, 0x1978, 0x197F, 0x1987, 0x198E, 0x1995, 0x199C
+ .2byte 0x19A4, 0x19AB, 0x19B2, 0x19B9, 0x19C1, 0x19C8, 0x19CF, 0x19D6
+ .2byte 0x19DE, 0x19E5, 0x19EC, 0x19F3, 0x19FB, 0x1A02, 0x1A09, 0x1A10
+ .2byte 0x1A17, 0x1A1F, 0x1A26, 0x1A2D, 0x1A34, 0x1A3C, 0x1A43, 0x1A4A
+ .2byte 0x1A51, 0x1A59, 0x1A60, 0x1A67, 0x1A6E, 0x1A75, 0x1A7D, 0x1A84
+ .2byte 0x1A8B, 0x1A92, 0x1A99, 0x1AA1, 0x1AA8, 0x1AAF, 0x1AB6, 0x1ABE
+ .2byte 0x1AC5, 0x1ACC, 0x1AD3, 0x1ADA, 0x1AE2, 0x1AE9, 0x1AF0, 0x1AF7
+ .2byte 0x1AFE, 0x1B06, 0x1B0D, 0x1B14, 0x1B1B, 0x1B22, 0x1B29, 0x1B31
+ .2byte 0x1B38, 0x1B3F, 0x1B46, 0x1B4D, 0x1B55, 0x1B5C, 0x1B63, 0x1B6A
+ .2byte 0x1B71, 0x1B79, 0x1B80, 0x1B87, 0x1B8E, 0x1B95, 0x1B9C, 0x1BA4
+ .2byte 0x1BAB, 0x1BB2, 0x1BB9, 0x1BC0, 0x1BC7, 0x1BCF, 0x1BD6, 0x1BDD
+ .2byte 0x1BE4, 0x1BEB, 0x1BF2, 0x1BFA, 0x1C01, 0x1C08, 0x1C0F, 0x1C16
+ .2byte 0x1C1D, 0x1C25, 0x1C2C, 0x1C33, 0x1C3A, 0x1C41, 0x1C48, 0x1C4F
+ .2byte 0x1C57, 0x1C5E, 0x1C65, 0x1C6C, 0x1C73, 0x1C7A, 0x1C81, 0x1C89
+ .2byte 0x1C90, 0x1C97, 0x1C9E, 0x1CA5, 0x1CAC, 0x1CB3, 0x1CBB, 0x1CC2
+ .2byte 0x1CC9, 0x1CD0, 0x1CD7, 0x1CDE, 0x1CE5, 0x1CEC, 0x1CF4, 0x1CFB
+ .2byte 0x1D02, 0x1D09, 0x1D10, 0x1D17, 0x1D1E, 0x1D25, 0x1D2D, 0x1D34
+ .2byte 0x1D3B, 0x1D42, 0x1D49, 0x1D50, 0x1D57, 0x1D5E, 0x1D65, 0x1D6D
+ .2byte 0x1D74, 0x1D7B, 0x1D82, 0x1D89, 0x1D90, 0x1D97, 0x1D9E, 0x1DA5
+ .2byte 0x1DAC, 0x1DB4, 0x1DBB, 0x1DC2, 0x1DC9, 0x1DD0, 0x1DD7, 0x1DDE
+ .2byte 0x1DE5, 0x1DEC, 0x1DF3, 0x1DFA, 0x1E02, 0x1E09, 0x1E10, 0x1E17
+ .2byte 0x1E1E, 0x1E25, 0x1E2C, 0x1E33, 0x1E3A, 0x1E41, 0x1E48, 0x1E4F
+ .2byte 0x1E56, 0x1E5D, 0x1E65, 0x1E6C, 0x1E73, 0x1E7A, 0x1E81, 0x1E88
+ .2byte 0x1E8F, 0x1E96, 0x1E9D, 0x1EA4, 0x1EAB, 0x1EB2, 0x1EB9, 0x1EC0
+ .2byte 0x1EC7, 0x1ECE, 0x1ED5, 0x1EDC, 0x1EE4, 0x1EEB, 0x1EF2, 0x1EF9
+ .2byte 0x1F00, 0x1F07, 0x1F0E, 0x1F15, 0x1F1C, 0x1F23, 0x1F2A, 0x1F31
+ .2byte 0x1F38, 0x1F3F, 0x1F46, 0x1F4D, 0x1F54, 0x1F5B, 0x1F62, 0x1F69
+ .2byte 0x1F70, 0x1F77, 0x1F7E, 0x1F85, 0x1F8C, 0x1F93, 0x1F9A, 0x1FA1
+ .2byte 0x1FA8, 0x1FAF, 0x1FB6, 0x1FBD, 0x1FC4, 0x1FCB, 0x1FD2, 0x1FD9
+ .2byte 0x1FE0, 0x1FE7, 0x1FEE, 0x1FF5, 0x1FFC, 0x2003, 0x200A, 0x2011
+ .2byte 0x2018, 0x201F, 0x2026, 0x202D, 0x2034, 0x203B, 0x2042, 0x2049
+ .2byte 0x2050, 0x2057, 0x205E, 0x2065, 0x206C, 0x2073, 0x207A, 0x2081
+ .2byte 0x2088, 0x208F, 0x2096, 0x209D, 0x20A4, 0x20AB, 0x20B2, 0x20B9
+ .2byte 0x20C0, 0x20C7, 0x20CE, 0x20D5, 0x20DC, 0x20E3, 0x20EA, 0x20F1
+ .2byte 0x20F8, 0x20FE, 0x2105, 0x210C, 0x2113, 0x211A, 0x2121, 0x2128
+ .2byte 0x212F, 0x2136, 0x213D, 0x2144, 0x214B, 0x2152, 0x2159, 0x2160
+ .2byte 0x2167, 0x216E, 0x2174, 0x217B, 0x2182, 0x2189, 0x2190, 0x2197
+ .2byte 0x219E, 0x21A5, 0x21AC, 0x21B3, 0x21BA, 0x21C1, 0x21C8, 0x21CE
+ .2byte 0x21D5, 0x21DC, 0x21E3, 0x21EA, 0x21F1, 0x21F8, 0x21FF, 0x2206
+ .2byte 0x220D, 0x2214, 0x221A, 0x2221, 0x2228, 0x222F, 0x2236, 0x223D
+ .2byte 0x2244, 0x224B, 0x2252, 0x2258, 0x225F, 0x2266, 0x226D, 0x2274
+ .2byte 0x227B, 0x2282, 0x2289, 0x2290, 0x2296, 0x229D, 0x22A4, 0x22AB
+ .2byte 0x22B2, 0x22B9, 0x22C0, 0x22C7, 0x22CD, 0x22D4, 0x22DB, 0x22E2
+ .2byte 0x22E9, 0x22F0, 0x22F7, 0x22FD, 0x2304, 0x230B, 0x2312, 0x2319
+ .2byte 0x2320, 0x2327, 0x232D, 0x2334, 0x233B, 0x2342, 0x2349, 0x2350
+ .2byte 0x2356, 0x235D, 0x2364, 0x236B, 0x2372, 0x2379, 0x2380, 0x2386
+ .2byte 0x238D, 0x2394, 0x239B, 0x23A2, 0x23A8, 0x23AF, 0x23B6, 0x23BD
+ .2byte 0x23C4, 0x23CB, 0x23D1, 0x23D8, 0x23DF, 0x23E6, 0x23ED, 0x23F3
+ .2byte 0x23FA, 0x2401, 0x2408, 0x240F, 0x2415, 0x241C, 0x2423, 0x242A
+ .2byte 0x2431, 0x2437, 0x243E, 0x2445, 0x244C, 0x2453, 0x2459, 0x2460
+ .2byte 0x2467, 0x246E, 0x2475, 0x247B, 0x2482, 0x2489, 0x2490, 0x2497
+ .2byte 0x249D, 0x24A4, 0x24AB, 0x24B2, 0x24B8, 0x24BF, 0x24C6, 0x24CD
+ .2byte 0x24D3, 0x24DA, 0x24E1, 0x24E8, 0x24EE, 0x24F5, 0x24FC, 0x2503
+ .2byte 0x250A, 0x2510, 0x2517, 0x251E, 0x2525, 0x252B, 0x2532, 0x2539
+ .2byte 0x253F, 0x2546, 0x254D, 0x2554, 0x255A, 0x2561, 0x2568, 0x256F
+ .2byte 0x2575, 0x257C, 0x2583, 0x258A, 0x2590, 0x2597, 0x259E, 0x25A4
+ .2byte 0x25AB, 0x25B2, 0x25B9, 0x25BF, 0x25C6, 0x25CD, 0x25D3, 0x25DA
+ .2byte 0x25E1, 0x25E8, 0x25EE, 0x25F5, 0x25FC, 0x2602, 0x2609, 0x2610
+ .2byte 0x2617, 0x261D, 0x2624, 0x262B, 0x2631, 0x2638, 0x263F, 0x2645
+ .2byte 0x264C, 0x2653, 0x2659, 0x2660, 0x2667, 0x266D, 0x2674, 0x267B
+ .2byte 0x2681, 0x2688, 0x268F, 0x2695, 0x269C, 0x26A3, 0x26A9, 0x26B0
+ .2byte 0x26B7, 0x26BD, 0x26C4, 0x26CB, 0x26D1, 0x26D8, 0x26DF, 0x26E5
+ .2byte 0x26EC, 0x26F3, 0x26F9, 0x2700, 0x2707, 0x270D, 0x2714, 0x271B
+ .2byte 0x2721, 0x2728, 0x272E, 0x2735, 0x273C, 0x2742, 0x2749, 0x2750
+ .2byte 0x2756, 0x275D, 0x2764, 0x276A, 0x2771, 0x2777, 0x277E, 0x2785
+ .2byte 0x278B, 0x2792, 0x2798, 0x279F, 0x27A6, 0x27AC, 0x27B3, 0x27B9
+ .2byte 0x27C0, 0x27C7, 0x27CD, 0x27D4, 0x27DB, 0x27E1, 0x27E8, 0x27EE
+ .2byte 0x27F5, 0x27FB, 0x2802, 0x2809, 0x280F, 0x2816, 0x281C, 0x2823
+ .2byte 0x282A, 0x2830, 0x2837, 0x283D, 0x2844, 0x284A, 0x2851, 0x2858
+ .2byte 0x285E, 0x2865, 0x286B, 0x2872, 0x2878, 0x287F, 0x2886, 0x288C
+ .2byte 0x2893, 0x2899, 0x28A0, 0x28A6, 0x28AD, 0x28B3, 0x28BA, 0x28C0
+ .2byte 0x28C7, 0x28CE, 0x28D4, 0x28DB, 0x28E1, 0x28E8, 0x28EE, 0x28F5
+ .2byte 0x28FB, 0x2902, 0x2908, 0x290F, 0x2915, 0x291C, 0x2922, 0x2929
+ .2byte 0x292F, 0x2936, 0x293D, 0x2943, 0x294A, 0x2950, 0x2957, 0x295D
+ .2byte 0x2964, 0x296A, 0x2971, 0x2977, 0x297E, 0x2984, 0x298B, 0x2991
+ .2byte 0x2998, 0x299E, 0x29A5, 0x29AB, 0x29B2, 0x29B8, 0x29BE, 0x29C5
+ .2byte 0x29CB, 0x29D2, 0x29D8, 0x29DF, 0x29E5, 0x29EC, 0x29F2, 0x29F9
+ .2byte 0x29FF, 0x2A06, 0x2A0C, 0x2A13, 0x2A19, 0x2A20, 0x2A26, 0x2A2C
+ .2byte 0x2A33, 0x2A39, 0x2A40, 0x2A46, 0x2A4D, 0x2A53, 0x2A5A, 0x2A60
+ .2byte 0x2A67, 0x2A6D, 0x2A73, 0x2A7A, 0x2A80, 0x2A87, 0x2A8D, 0x2A94
+ .2byte 0x2A9A, 0x2AA0, 0x2AA7, 0x2AAD, 0x2AB4, 0x2ABA, 0x2AC1, 0x2AC7
+ .2byte 0x2ACD, 0x2AD4, 0x2ADA, 0x2AE1, 0x2AE7, 0x2AED, 0x2AF4, 0x2AFA
+ .2byte 0x2B01, 0x2B07, 0x2B0D, 0x2B14, 0x2B1A, 0x2B21, 0x2B27, 0x2B2D
+ .2byte 0x2B34, 0x2B3A, 0x2B41, 0x2B47, 0x2B4D, 0x2B54, 0x2B5A, 0x2B61
+ .2byte 0x2B67, 0x2B6D, 0x2B74, 0x2B7A, 0x2B80, 0x2B87, 0x2B8D, 0x2B94
+ .2byte 0x2B9A, 0x2BA0, 0x2BA7, 0x2BAD, 0x2BB3, 0x2BBA, 0x2BC0, 0x2BC6
+ .2byte 0x2BCD, 0x2BD3, 0x2BD9, 0x2BE0, 0x2BE6, 0x2BEC, 0x2BF3, 0x2BF9
+ .2byte 0x2BFF, 0x2C06, 0x2C0C, 0x2C12, 0x2C19, 0x2C1F, 0x2C25, 0x2C2C
+ .2byte 0x2C32, 0x2C38, 0x2C3F, 0x2C45, 0x2C4B, 0x2C52, 0x2C58, 0x2C5E
+ .2byte 0x2C65, 0x2C6B, 0x2C71, 0x2C78, 0x2C7E, 0x2C84, 0x2C8B, 0x2C91
+ .2byte 0x2C97, 0x2C9D, 0x2CA4, 0x2CAA, 0x2CB0, 0x2CB7, 0x2CBD, 0x2CC3
+ .2byte 0x2CC9, 0x2CD0, 0x2CD6, 0x2CDC, 0x2CE3, 0x2CE9, 0x2CEF, 0x2CF5
+ .2byte 0x2CFC, 0x2D02, 0x2D08, 0x2D0E, 0x2D15, 0x2D1B, 0x2D21, 0x2D28
+ .2byte 0x2D2E, 0x2D34, 0x2D3A, 0x2D41, 0x2D47, 0x2D4D, 0x2D53, 0x2D5A
+ .2byte 0x2D60, 0x2D66, 0x2D6C, 0x2D73, 0x2D79, 0x2D7F, 0x2D85, 0x2D8B
+ .2byte 0x2D92, 0x2D98, 0x2D9E, 0x2DA4, 0x2DAB, 0x2DB1, 0x2DB7, 0x2DBD
+ .2byte 0x2DC3, 0x2DCA, 0x2DD0, 0x2DD6, 0x2DDC, 0x2DE3, 0x2DE9, 0x2DEF
+ .2byte 0x2DF5, 0x2DFB, 0x2E02, 0x2E08, 0x2E0E, 0x2E14, 0x2E1A, 0x2E21
+ .2byte 0x2E27, 0x2E2D, 0x2E33, 0x2E39, 0x2E3F, 0x2E46, 0x2E4C, 0x2E52
+ .2byte 0x2E58, 0x2E5E, 0x2E64, 0x2E6B, 0x2E71, 0x2E77, 0x2E7D, 0x2E83
+ .2byte 0x2E89, 0x2E90, 0x2E96, 0x2E9C, 0x2EA2, 0x2EA8, 0x2EAE, 0x2EB5
+ .2byte 0x2EBB, 0x2EC1, 0x2EC7, 0x2ECD, 0x2ED3, 0x2ED9, 0x2EE0, 0x2EE6
+ .2byte 0x2EEC, 0x2EF2, 0x2EF8, 0x2EFE, 0x2F04, 0x2F0A, 0x2F11, 0x2F17
+ .2byte 0x2F1D, 0x2F23, 0x2F29, 0x2F2F, 0x2F35, 0x2F3B, 0x2F42, 0x2F48
+ .2byte 0x2F4E, 0x2F54, 0x2F5A, 0x2F60, 0x2F66, 0x2F6C, 0x2F72, 0x2F78
+ .2byte 0x2F7E, 0x2F85, 0x2F8B, 0x2F91, 0x2F97, 0x2F9D, 0x2FA3, 0x2FA9
+ .2byte 0x2FAF, 0x2FB5, 0x2FBB, 0x2FC1, 0x2FC7, 0x2FCE, 0x2FD4, 0x2FDA
+ .2byte 0x2FE0, 0x2FE6, 0x2FEC, 0x2FF2, 0x2FF8, 0x2FFE, 0x3004, 0x300A
+ .2byte 0x3010, 0x3016, 0x301C, 0x3022, 0x3028, 0x302E, 0x3034, 0x303A
+ .2byte 0x3040, 0x3046, 0x304D, 0x3053, 0x3059, 0x305F, 0x3065, 0x306B
+ .2byte 0x3071, 0x3077, 0x307D, 0x3083, 0x3089, 0x308F, 0x3095, 0x309B
+ .2byte 0x30A1, 0x30A7, 0x30AD, 0x30B3, 0x30B9, 0x30BF, 0x30C5, 0x30CB
+ .2byte 0x30D1, 0x30D7, 0x30DD, 0x30E3, 0x30E9, 0x30EF, 0x30F5, 0x30FB
+ .2byte 0x3101, 0x3107, 0x310C, 0x3112, 0x3118, 0x311E, 0x3124, 0x312A
+ .2byte 0x3130, 0x3136, 0x313C, 0x3142, 0x3148, 0x314E, 0x3154, 0x315A
+ .2byte 0x3160, 0x3166, 0x316C, 0x3172, 0x3178, 0x317E, 0x3184, 0x3189
+ .2byte 0x318F, 0x3195, 0x319B, 0x31A1, 0x31A7, 0x31AD, 0x31B3, 0x31B9
+ .2byte 0x31BF, 0x31C5, 0x31CB, 0x31D0, 0x31D6, 0x31DC, 0x31E2, 0x31E8
+ .2byte 0x31EE, 0x31F4, 0x31FA, 0x3200, 0x3206, 0x320B, 0x3211, 0x3217
+ .2byte 0x321D, 0x3223, 0x3229, 0x322F, 0x3235, 0x323B, 0x3240, 0x3246
+ .2byte 0x324C, 0x3252, 0x3258, 0x325E, 0x3264, 0x3269, 0x326F, 0x3275
+ .2byte 0x327B, 0x3281, 0x3287, 0x328D, 0x3292, 0x3298, 0x329E, 0x32A4
+ .2byte 0x32AA, 0x32B0, 0x32B5, 0x32BB, 0x32C1, 0x32C7, 0x32CD, 0x32D3
+ .2byte 0x32D8, 0x32DE, 0x32E4, 0x32EA, 0x32F0, 0x32F6, 0x32FB, 0x3301
+ .2byte 0x3307, 0x330D, 0x3313, 0x3318, 0x331E, 0x3324, 0x332A, 0x3330
+ .2byte 0x3335, 0x333B, 0x3341, 0x3347, 0x334D, 0x3352, 0x3358, 0x335E
+ .2byte 0x3364, 0x3369, 0x336F, 0x3375, 0x337B, 0x3380, 0x3386, 0x338C
+ .2byte 0x3392, 0x3398, 0x339D, 0x33A3, 0x33A9, 0x33AF, 0x33B4, 0x33BA
+ .2byte 0x33C0, 0x33C6, 0x33CB, 0x33D1, 0x33D7, 0x33DD, 0x33E2, 0x33E8
+ .2byte 0x33EE, 0x33F3, 0x33F9, 0x33FF, 0x3405, 0x340A, 0x3410, 0x3416
+ .2byte 0x341B, 0x3421, 0x3427, 0x342D, 0x3432, 0x3438, 0x343E, 0x3443
+ .2byte 0x3449, 0x344F, 0x3455, 0x345A, 0x3460, 0x3466, 0x346B, 0x3471
+ .2byte 0x3477, 0x347C, 0x3482, 0x3488, 0x348D, 0x3493, 0x3499, 0x349E
+ .2byte 0x34A4, 0x34AA, 0x34AF, 0x34B5, 0x34BB, 0x34C0, 0x34C6, 0x34CC
+ .2byte 0x34D1, 0x34D7, 0x34DD, 0x34E2, 0x34E8, 0x34EE, 0x34F3, 0x34F9
+ .2byte 0x34FF, 0x3504, 0x350A, 0x350F, 0x3515, 0x351B, 0x3520, 0x3526
+ .2byte 0x352C, 0x3531, 0x3537, 0x353C, 0x3542, 0x3548, 0x354D, 0x3553
+ .2byte 0x3558, 0x355E, 0x3564, 0x3569, 0x356F, 0x3574, 0x357A, 0x3580
+ .2byte 0x3585, 0x358B, 0x3590, 0x3596, 0x359C, 0x35A1, 0x35A7, 0x35AC
+ .2byte 0x35B2, 0x35B7, 0x35BD, 0x35C3, 0x35C8, 0x35CE, 0x35D3, 0x35D9
+ .2byte 0x35DE, 0x35E4, 0x35E9, 0x35EF, 0x35F5, 0x35FA, 0x3600, 0x3605
+ .2byte 0x360B, 0x3610, 0x3616, 0x361B, 0x3621, 0x3626, 0x362C, 0x3631
+ .2byte 0x3637, 0x363C, 0x3642, 0x3647, 0x364D, 0x3653, 0x3658, 0x365E
+ .2byte 0x3663, 0x3669, 0x366E, 0x3674, 0x3679, 0x367F, 0x3684, 0x368A
+ .2byte 0x368F, 0x3695, 0x369A, 0x369F, 0x36A5, 0x36AA, 0x36B0, 0x36B5
+ .2byte 0x36BB, 0x36C0, 0x36C6, 0x36CB, 0x36D1, 0x36D6, 0x36DC, 0x36E1
+ .2byte 0x36E7, 0x36EC, 0x36F2, 0x36F7, 0x36FC, 0x3702, 0x3707, 0x370D
+ .2byte 0x3712, 0x3718, 0x371D, 0x3722, 0x3728, 0x372D, 0x3733, 0x3738
+ .2byte 0x373E, 0x3743, 0x3748, 0x374E, 0x3753, 0x3759, 0x375E, 0x3764
+ .2byte 0x3769, 0x376E, 0x3774, 0x3779, 0x377F, 0x3784, 0x3789, 0x378F
+ .2byte 0x3794, 0x379A, 0x379F, 0x37A4, 0x37AA, 0x37AF, 0x37B4, 0x37BA
+ .2byte 0x37BF, 0x37C5, 0x37CA, 0x37CF, 0x37D5, 0x37DA, 0x37DF, 0x37E5
+ .2byte 0x37EA, 0x37EF, 0x37F5, 0x37FA, 0x3800, 0x3805, 0x380A, 0x3810
+ .2byte 0x3815, 0x381A, 0x3820, 0x3825, 0x382A, 0x3830, 0x3835, 0x383A
+ .2byte 0x3840, 0x3845, 0x384A, 0x3850, 0x3855, 0x385A, 0x385F, 0x3865
+ .2byte 0x386A, 0x386F, 0x3875, 0x387A, 0x387F, 0x3885, 0x388A, 0x388F
+ .2byte 0x3894, 0x389A, 0x389F, 0x38A4, 0x38AA, 0x38AF, 0x38B4, 0x38B9
+ .2byte 0x38BF, 0x38C4, 0x38C9, 0x38CE, 0x38D4, 0x38D9, 0x38DE, 0x38E4
+ .2byte 0x38E9, 0x38EE, 0x38F3, 0x38F9, 0x38FE, 0x3903, 0x3908, 0x390E
+ .2byte 0x3913, 0x3918, 0x391D, 0x3922, 0x3928, 0x392D, 0x3932, 0x3937
+ .2byte 0x393D, 0x3942, 0x3947, 0x394C, 0x3951, 0x3957, 0x395C, 0x3961
+ .2byte 0x3966, 0x396B, 0x3971, 0x3976, 0x397B, 0x3980, 0x3985, 0x398B
+ .2byte 0x3990, 0x3995, 0x399A, 0x399F, 0x39A5, 0x39AA, 0x39AF, 0x39B4
+ .2byte 0x39B9, 0x39BE, 0x39C4, 0x39C9, 0x39CE, 0x39D3, 0x39D8, 0x39DD
+ .2byte 0x39E3, 0x39E8, 0x39ED, 0x39F2, 0x39F7, 0x39FC, 0x3A01, 0x3A07
+ .2byte 0x3A0C, 0x3A11, 0x3A16, 0x3A1B, 0x3A20, 0x3A25, 0x3A2A, 0x3A30
+ .2byte 0x3A35, 0x3A3A, 0x3A3F, 0x3A44, 0x3A49, 0x3A4E, 0x3A53, 0x3A58
+ .2byte 0x3A5E, 0x3A63, 0x3A68, 0x3A6D, 0x3A72, 0x3A77, 0x3A7C, 0x3A81
+ .2byte 0x3A86, 0x3A8B, 0x3A90, 0x3A95, 0x3A9B, 0x3AA0, 0x3AA5, 0x3AAA
+ .2byte 0x3AAF, 0x3AB4, 0x3AB9, 0x3ABE, 0x3AC3, 0x3AC8, 0x3ACD, 0x3AD2
+ .2byte 0x3AD7, 0x3ADC, 0x3AE1, 0x3AE6, 0x3AEB, 0x3AF0, 0x3AF5, 0x3AFA
+ .2byte 0x3B00, 0x3B05, 0x3B0A, 0x3B0F, 0x3B14, 0x3B19, 0x3B1E, 0x3B23
+ .2byte 0x3B28, 0x3B2D, 0x3B32, 0x3B37, 0x3B3C, 0x3B41, 0x3B46, 0x3B4B
+ .2byte 0x3B50, 0x3B55, 0x3B5A, 0x3B5F, 0x3B64, 0x3B69, 0x3B6E, 0x3B73
+ .2byte 0x3B78, 0x3B7D, 0x3B81, 0x3B86, 0x3B8B, 0x3B90, 0x3B95, 0x3B9A
+ .2byte 0x3B9F, 0x3BA4, 0x3BA9, 0x3BAE, 0x3BB3, 0x3BB8, 0x3BBD, 0x3BC2
+ .2byte 0x3BC7, 0x3BCC, 0x3BD1, 0x3BD6, 0x3BDB, 0x3BE0, 0x3BE4, 0x3BE9
+ .2byte 0x3BEE, 0x3BF3, 0x3BF8, 0x3BFD, 0x3C02, 0x3C07, 0x3C0C, 0x3C11
+ .2byte 0x3C16, 0x3C1A, 0x3C1F, 0x3C24, 0x3C29, 0x3C2E, 0x3C33, 0x3C38
+ .2byte 0x3C3D, 0x3C42, 0x3C46, 0x3C4B, 0x3C50, 0x3C55, 0x3C5A, 0x3C5F
+ .2byte 0x3C64, 0x3C69, 0x3C6D, 0x3C72, 0x3C77, 0x3C7C, 0x3C81, 0x3C86
+ .2byte 0x3C8B, 0x3C8F, 0x3C94, 0x3C99, 0x3C9E, 0x3CA3, 0x3CA8, 0x3CAC
+ .2byte 0x3CB1, 0x3CB6, 0x3CBB, 0x3CC0, 0x3CC5, 0x3CC9, 0x3CCE, 0x3CD3
+ .2byte 0x3CD8, 0x3CDD, 0x3CE1, 0x3CE6, 0x3CEB, 0x3CF0, 0x3CF5, 0x3CF9
+ .2byte 0x3CFE, 0x3D03, 0x3D08, 0x3D0D, 0x3D11, 0x3D16, 0x3D1B, 0x3D20
+ .2byte 0x3D25, 0x3D29, 0x3D2E, 0x3D33, 0x3D38, 0x3D3C, 0x3D41, 0x3D46
+ .2byte 0x3D4B, 0x3D4F, 0x3D54, 0x3D59, 0x3D5E, 0x3D62, 0x3D67, 0x3D6C
+ .2byte 0x3D71, 0x3D75, 0x3D7A, 0x3D7F, 0x3D84, 0x3D88, 0x3D8D, 0x3D92
+ .2byte 0x3D96, 0x3D9B, 0x3DA0, 0x3DA5, 0x3DA9, 0x3DAE, 0x3DB3, 0x3DB7
+ .2byte 0x3DBC, 0x3DC1, 0x3DC6, 0x3DCA, 0x3DCF, 0x3DD4, 0x3DD8, 0x3DDD
+ .2byte 0x3DE2, 0x3DE6, 0x3DEB, 0x3DF0, 0x3DF4, 0x3DF9, 0x3DFE, 0x3E02
+ .2byte 0x3E07, 0x3E0C, 0x3E10, 0x3E15, 0x3E1A, 0x3E1E, 0x3E23, 0x3E28
+ .2byte 0x3E2C, 0x3E31, 0x3E36, 0x3E3A, 0x3E3F, 0x3E43, 0x3E48, 0x3E4D
+ .2byte 0x3E51, 0x3E56, 0x3E5B, 0x3E5F, 0x3E64, 0x3E68, 0x3E6D, 0x3E72
+ .2byte 0x3E76, 0x3E7B, 0x3E7F, 0x3E84, 0x3E89, 0x3E8D, 0x3E92, 0x3E96
+ .2byte 0x3E9B, 0x3EA0, 0x3EA4, 0x3EA9, 0x3EAD, 0x3EB2, 0x3EB7, 0x3EBB
+ .2byte 0x3EC0, 0x3EC4, 0x3EC9, 0x3ECD, 0x3ED2, 0x3ED6, 0x3EDB, 0x3EE0
+ .2byte 0x3EE4, 0x3EE9, 0x3EED, 0x3EF2, 0x3EF6, 0x3EFB, 0x3EFF, 0x3F04
+ .2byte 0x3F08, 0x3F0D, 0x3F12, 0x3F16, 0x3F1B, 0x3F1F, 0x3F24, 0x3F28
+ .2byte 0x3F2D, 0x3F31, 0x3F36, 0x3F3A, 0x3F3F, 0x3F43, 0x3F48, 0x3F4C
+ .2byte 0x3F51, 0x3F55, 0x3F5A, 0x3F5E, 0x3F63, 0x3F67, 0x3F6C, 0x3F70
+ .2byte 0x3F75, 0x3F79, 0x3F7D, 0x3F82, 0x3F86, 0x3F8B, 0x3F8F, 0x3F94
+ .2byte 0x3F98, 0x3F9D, 0x3FA1, 0x3FA6, 0x3FAA, 0x3FAE, 0x3FB3, 0x3FB7
+ .2byte 0x3FBC, 0x3FC0, 0x3FC5, 0x3FC9, 0x3FCE, 0x3FD2, 0x3FD6, 0x3FDB
+ .2byte 0x3FDF, 0x3FE4, 0x3FE8, 0x3FEC, 0x3FF1, 0x3FF5, 0x3FFA, 0x3FFE
+ .2byte 0x4002, 0x4007, 0x400B, 0x4010, 0x4014, 0x4018, 0x401D, 0x4021
+ .2byte 0x4026, 0x402A, 0x402E, 0x4033, 0x4037, 0x403B, 0x4040, 0x4044
+ .2byte 0x4048, 0x404D, 0x4051, 0x4056, 0x405A, 0x405E, 0x4063, 0x4067
+ .2byte 0x406B, 0x4070, 0x4074, 0x4078, 0x407D, 0x4081, 0x4085, 0x408A
+ .2byte 0x408E, 0x4092, 0x4097, 0x409B, 0x409F, 0x40A3, 0x40A8, 0x40AC
+ .2byte 0x40B0, 0x40B5, 0x40B9, 0x40BD, 0x40C2, 0x40C6, 0x40CA, 0x40CE
+ .2byte 0x40D3, 0x40D7, 0x40DB, 0x40E0, 0x40E4, 0x40E8, 0x40EC, 0x40F1
+ .2byte 0x40F5, 0x40F9, 0x40FD, 0x4102, 0x4106, 0x410A, 0x410E, 0x4113
+ .2byte 0x4117, 0x411B, 0x411F, 0x4124, 0x4128, 0x412C, 0x4130, 0x4135
+ .2byte 0x4139, 0x413D, 0x4141, 0x4145, 0x414A, 0x414E, 0x4152, 0x4156
+ .2byte 0x415A, 0x415F, 0x4163, 0x4167, 0x416B, 0x416F, 0x4174, 0x4178
+ .2byte 0x417C, 0x4180, 0x4184, 0x4189, 0x418D, 0x4191, 0x4195, 0x4199
+ .2byte 0x419D, 0x41A2, 0x41A6, 0x41AA, 0x41AE, 0x41B2, 0x41B6, 0x41BA
+ .2byte 0x41BF, 0x41C3, 0x41C7, 0x41CB, 0x41CF, 0x41D3, 0x41D7, 0x41DC
+ .2byte 0x41E0, 0x41E4, 0x41E8, 0x41EC, 0x41F0, 0x41F4, 0x41F8, 0x41FC
+ .2byte 0x4201, 0x4205, 0x4209, 0x420D, 0x4211, 0x4215, 0x4219, 0x421D
+ .2byte 0x4221, 0x4225, 0x4229, 0x422E, 0x4232, 0x4236, 0x423A, 0x423E
+ .2byte 0x4242, 0x4246, 0x424A, 0x424E, 0x4252, 0x4256, 0x425A, 0x425E
+ .2byte 0x4262, 0x4266, 0x426A, 0x426E, 0x4272, 0x4277, 0x427B, 0x427F
+ .2byte 0x4283, 0x4287, 0x428B, 0x428F, 0x4293, 0x4297, 0x429B, 0x429F
+ .2byte 0x42A3, 0x42A7, 0x42AB, 0x42AF, 0x42B3, 0x42B7, 0x42BB, 0x42BF
+ .2byte 0x42C3, 0x42C7, 0x42CB, 0x42CF, 0x42D3, 0x42D7, 0x42DB, 0x42DE
+ .2byte 0x42E2, 0x42E6, 0x42EA, 0x42EE, 0x42F2, 0x42F6, 0x42FA, 0x42FE
+ .2byte 0x4302, 0x4306, 0x430A, 0x430E, 0x4312, 0x4316, 0x431A, 0x431E
+ .2byte 0x4322, 0x4325, 0x4329, 0x432D, 0x4331, 0x4335, 0x4339, 0x433D
+ .2byte 0x4341, 0x4345, 0x4349, 0x434D, 0x4350, 0x4354, 0x4358, 0x435C
+ .2byte 0x4360, 0x4364, 0x4368, 0x436C, 0x436F, 0x4373, 0x4377, 0x437B
+ .2byte 0x437F, 0x4383, 0x4387, 0x438B, 0x438E, 0x4392, 0x4396, 0x439A
+ .2byte 0x439E, 0x43A2, 0x43A5, 0x43A9, 0x43AD, 0x43B1, 0x43B5, 0x43B9
+ .2byte 0x43BC, 0x43C0, 0x43C4, 0x43C8, 0x43CC, 0x43CF, 0x43D3, 0x43D7
+ .2byte 0x43DB, 0x43DF, 0x43E3, 0x43E6, 0x43EA, 0x43EE, 0x43F2, 0x43F5
+ .2byte 0x43F9, 0x43FD, 0x4401, 0x4405, 0x4408, 0x440C, 0x4410, 0x4414
+ .2byte 0x4417, 0x441B, 0x441F, 0x4423, 0x4426, 0x442A, 0x442E, 0x4432
+ .2byte 0x4435, 0x4439, 0x443D, 0x4441, 0x4444, 0x4448, 0x444C, 0x4450
+ .2byte 0x4453, 0x4457, 0x445B, 0x445E, 0x4462, 0x4466, 0x446A, 0x446D
+ .2byte 0x4471, 0x4475, 0x4478, 0x447C, 0x4480, 0x4483, 0x4487, 0x448B
+ .2byte 0x448E, 0x4492, 0x4496, 0x4499, 0x449D, 0x44A1, 0x44A4, 0x44A8
+ .2byte 0x44AC, 0x44AF, 0x44B3, 0x44B7, 0x44BA, 0x44BE, 0x44C2, 0x44C5
+ .2byte 0x44C9, 0x44CD, 0x44D0, 0x44D4, 0x44D7, 0x44DB, 0x44DF, 0x44E2
+ .2byte 0x44E6, 0x44EA, 0x44ED, 0x44F1, 0x44F4, 0x44F8, 0x44FC, 0x44FF
+ .2byte 0x4503, 0x4506, 0x450A, 0x450E, 0x4511, 0x4515, 0x4518, 0x451C
+ .2byte 0x451F, 0x4523, 0x4527, 0x452A, 0x452E, 0x4531, 0x4535, 0x4538
+ .2byte 0x453C, 0x4540, 0x4543, 0x4547, 0x454A, 0x454E, 0x4551, 0x4555
+ .2byte 0x4558, 0x455C, 0x455F, 0x4563, 0x4566, 0x456A, 0x456D, 0x4571
+ .2byte 0x4574, 0x4578, 0x457B, 0x457F, 0x4582, 0x4586, 0x4589, 0x458D
+ .2byte 0x4590, 0x4594, 0x4597, 0x459B, 0x459E, 0x45A2, 0x45A5, 0x45A9
+ .2byte 0x45AC, 0x45B0, 0x45B3, 0x45B7, 0x45BA, 0x45BE, 0x45C1, 0x45C5
+ .2byte 0x45C8, 0x45CB, 0x45CF, 0x45D2, 0x45D6, 0x45D9, 0x45DD, 0x45E0
+ .2byte 0x45E3, 0x45E7, 0x45EA, 0x45EE, 0x45F1, 0x45F5, 0x45F8, 0x45FB
+ .2byte 0x45FF, 0x4602, 0x4606, 0x4609, 0x460C, 0x4610, 0x4613, 0x4617
+ .2byte 0x461A, 0x461D, 0x4621, 0x4624, 0x4628, 0x462B, 0x462E, 0x4632
+ .2byte 0x4635, 0x4638, 0x463C, 0x463F, 0x4642, 0x4646, 0x4649, 0x464C
+ .2byte 0x4650, 0x4653, 0x4656, 0x465A, 0x465D, 0x4660, 0x4664, 0x4667
+ .2byte 0x466A, 0x466E, 0x4671, 0x4674, 0x4678, 0x467B, 0x467E, 0x4682
+ .2byte 0x4685, 0x4688, 0x468C, 0x468F, 0x4692, 0x4695, 0x4699, 0x469C
+ .2byte 0x469F, 0x46A3, 0x46A6, 0x46A9, 0x46AC, 0x46B0, 0x46B3, 0x46B6
+ .2byte 0x46B9, 0x46BD, 0x46C0, 0x46C3, 0x46C6, 0x46CA, 0x46CD, 0x46D0
+ .2byte 0x46D3, 0x46D7, 0x46DA, 0x46DD, 0x46E0, 0x46E4, 0x46E7, 0x46EA
+ .2byte 0x46ED, 0x46F0, 0x46F4, 0x46F7, 0x46FA, 0x46FD, 0x4700, 0x4704
+ .2byte 0x4707, 0x470A, 0x470D, 0x4710, 0x4714, 0x4717, 0x471A, 0x471D
+ .2byte 0x4720, 0x4723, 0x4727, 0x472A, 0x472D, 0x4730, 0x4733, 0x4736
+ .2byte 0x473A, 0x473D, 0x4740, 0x4743, 0x4746, 0x4749, 0x474C, 0x4750
+ .2byte 0x4753, 0x4756, 0x4759, 0x475C, 0x475F, 0x4762, 0x4765, 0x4769
+ .2byte 0x476C, 0x476F, 0x4772, 0x4775, 0x4778, 0x477B, 0x477E, 0x4781
+ .2byte 0x4784, 0x4788, 0x478B, 0x478E, 0x4791, 0x4794, 0x4797, 0x479A
+ .2byte 0x479D, 0x47A0, 0x47A3, 0x47A6, 0x47A9, 0x47AC, 0x47AF, 0x47B2
+ .2byte 0x47B6, 0x47B9, 0x47BC, 0x47BF, 0x47C2, 0x47C5, 0x47C8, 0x47CB
+ .2byte 0x47CE, 0x47D1, 0x47D4, 0x47D7, 0x47DA, 0x47DD, 0x47E0, 0x47E3
+ .2byte 0x47E6, 0x47E9, 0x47EC, 0x47EF, 0x47F2, 0x47F5, 0x47F8, 0x47FB
+ .2byte 0x47FE, 0x4801, 0x4804, 0x4807, 0x480A, 0x480D, 0x4810, 0x4813
+ .2byte 0x4816, 0x4818, 0x481B, 0x481E, 0x4821, 0x4824, 0x4827, 0x482A
+ .2byte 0x482D, 0x4830, 0x4833, 0x4836, 0x4839, 0x483C, 0x483F, 0x4842
+ .2byte 0x4844, 0x4847, 0x484A, 0x484D, 0x4850, 0x4853, 0x4856, 0x4859
+ .2byte 0x485C, 0x485F, 0x4861, 0x4864, 0x4867, 0x486A, 0x486D, 0x4870
+ .2byte 0x4873, 0x4876, 0x4878, 0x487B, 0x487E, 0x4881, 0x4884, 0x4887
+ .2byte 0x488A, 0x488C, 0x488F, 0x4892, 0x4895, 0x4898, 0x489B, 0x489D
+ .2byte 0x48A0, 0x48A3, 0x48A6, 0x48A9, 0x48AC, 0x48AE, 0x48B1, 0x48B4
+ .2byte 0x48B7, 0x48BA, 0x48BC, 0x48BF, 0x48C2, 0x48C5, 0x48C8, 0x48CA
+ .2byte 0x48CD, 0x48D0, 0x48D3, 0x48D6, 0x48D8, 0x48DB, 0x48DE, 0x48E1
+ .2byte 0x48E3, 0x48E6, 0x48E9, 0x48EC, 0x48EE, 0x48F1, 0x48F4, 0x48F7
+ .2byte 0x48F9, 0x48FC, 0x48FF, 0x4902, 0x4904, 0x4907, 0x490A, 0x490C
+ .2byte 0x490F, 0x4912, 0x4915, 0x4917, 0x491A, 0x491D, 0x491F, 0x4922
+ .2byte 0x4925, 0x4928, 0x492A, 0x492D, 0x4930, 0x4932, 0x4935, 0x4938
+ .2byte 0x493A, 0x493D, 0x4940, 0x4942, 0x4945, 0x4948, 0x494A, 0x494D
+ .2byte 0x4950, 0x4952, 0x4955, 0x4958, 0x495A, 0x495D, 0x495F, 0x4962
+ .2byte 0x4965, 0x4967, 0x496A, 0x496D, 0x496F, 0x4972, 0x4974, 0x4977
+ .2byte 0x497A, 0x497C, 0x497F, 0x4981, 0x4984, 0x4987, 0x4989, 0x498C
+ .2byte 0x498E, 0x4991, 0x4994, 0x4996, 0x4999, 0x499B, 0x499E, 0x49A0
+ .2byte 0x49A3, 0x49A6, 0x49A8, 0x49AB, 0x49AD, 0x49B0, 0x49B2, 0x49B5
+ .2byte 0x49B7, 0x49BA, 0x49BC, 0x49BF, 0x49C2, 0x49C4, 0x49C7, 0x49C9
+ .2byte 0x49CC, 0x49CE, 0x49D1, 0x49D3, 0x49D6, 0x49D8, 0x49DB, 0x49DD
+ .2byte 0x49E0, 0x49E2, 0x49E5, 0x49E7, 0x49EA, 0x49EC, 0x49EF, 0x49F1
+ .2byte 0x49F4, 0x49F6, 0x49F8, 0x49FB, 0x49FD, 0x4A00, 0x4A02, 0x4A05
+ .2byte 0x4A07, 0x4A0A, 0x4A0C, 0x4A0F, 0x4A11, 0x4A13, 0x4A16, 0x4A18
+ .2byte 0x4A1B, 0x4A1D, 0x4A20, 0x4A22, 0x4A24, 0x4A27, 0x4A29, 0x4A2C
+ .2byte 0x4A2E, 0x4A30, 0x4A33, 0x4A35, 0x4A38, 0x4A3A, 0x4A3C, 0x4A3F
+ .2byte 0x4A41, 0x4A44, 0x4A46, 0x4A48, 0x4A4B, 0x4A4D, 0x4A4F, 0x4A52
+ .2byte 0x4A54, 0x4A57, 0x4A59, 0x4A5B, 0x4A5E, 0x4A60, 0x4A62, 0x4A65
+ .2byte 0x4A67, 0x4A69, 0x4A6C, 0x4A6E, 0x4A70, 0x4A73, 0x4A75, 0x4A77
+ .2byte 0x4A7A, 0x4A7C, 0x4A7E, 0x4A81, 0x4A83, 0x4A85, 0x4A87, 0x4A8A
+ .2byte 0x4A8C, 0x4A8E, 0x4A91, 0x4A93, 0x4A95, 0x4A97, 0x4A9A, 0x4A9C
+ .2byte 0x4A9E, 0x4AA1, 0x4AA3, 0x4AA5, 0x4AA7, 0x4AAA, 0x4AAC, 0x4AAE
+ .2byte 0x4AB0, 0x4AB3, 0x4AB5, 0x4AB7, 0x4AB9, 0x4ABC, 0x4ABE, 0x4AC0
+ .2byte 0x4AC2, 0x4AC5, 0x4AC7, 0x4AC9, 0x4ACB, 0x4ACD, 0x4AD0, 0x4AD2
+ .2byte 0x4AD4, 0x4AD6, 0x4AD8, 0x4ADB, 0x4ADD, 0x4ADF, 0x4AE1, 0x4AE3
+ .2byte 0x4AE6, 0x4AE8, 0x4AEA, 0x4AEC, 0x4AEE, 0x4AF0, 0x4AF3, 0x4AF5
+ .2byte 0x4AF7, 0x4AF9, 0x4AFB, 0x4AFD, 0x4B00, 0x4B02, 0x4B04, 0x4B06
+ .2byte 0x4B08, 0x4B0A, 0x4B0C, 0x4B0F, 0x4B11, 0x4B13, 0x4B15, 0x4B17
+ .2byte 0x4B19, 0x4B1B, 0x4B1D, 0x4B1F, 0x4B22, 0x4B24, 0x4B26, 0x4B28
+ .2byte 0x4B2A, 0x4B2C, 0x4B2E, 0x4B30, 0x4B32, 0x4B34, 0x4B36, 0x4B38
+ .2byte 0x4B3B, 0x4B3D, 0x4B3F, 0x4B41, 0x4B43, 0x4B45, 0x4B47, 0x4B49
+ .2byte 0x4B4B, 0x4B4D, 0x4B4F, 0x4B51, 0x4B53, 0x4B55, 0x4B57, 0x4B59
+ .2byte 0x4B5B, 0x4B5D, 0x4B5F, 0x4B61, 0x4B63, 0x4B65, 0x4B67, 0x4B69
+ .2byte 0x4B6B, 0x4B6D, 0x4B6F, 0x4B71, 0x4B73, 0x4B75, 0x4B77, 0x4B79
+ .2byte 0x4B7B, 0x4B7D, 0x4B7F, 0x4B81, 0x4B83, 0x4B85, 0x4B87, 0x4B89
+ .2byte 0x4B8B, 0x4B8D, 0x4B8F, 0x4B91, 0x4B93, 0x4B95, 0x4B97, 0x4B99
+ .2byte 0x4B9B, 0x4B9D, 0x4B9E, 0x4BA0, 0x4BA2, 0x4BA4, 0x4BA6, 0x4BA8
+ .2byte 0x4BAA, 0x4BAC, 0x4BAE, 0x4BB0, 0x4BB2, 0x4BB3, 0x4BB5, 0x4BB7
+ .2byte 0x4BB9, 0x4BBB, 0x4BBD, 0x4BBF, 0x4BC1, 0x4BC3, 0x4BC4, 0x4BC6
+ .2byte 0x4BC8, 0x4BCA, 0x4BCC, 0x4BCE, 0x4BD0, 0x4BD1, 0x4BD3, 0x4BD5
+ .2byte 0x4BD7, 0x4BD9, 0x4BDB, 0x4BDC, 0x4BDE, 0x4BE0, 0x4BE2, 0x4BE4
+ .2byte 0x4BE6, 0x4BE7, 0x4BE9, 0x4BEB, 0x4BED, 0x4BEF, 0x4BF0, 0x4BF2
+ .2byte 0x4BF4, 0x4BF6, 0x4BF8, 0x4BF9, 0x4BFB, 0x4BFD, 0x4BFF, 0x4C01
+ .2byte 0x4C02, 0x4C04, 0x4C06, 0x4C08, 0x4C09, 0x4C0B, 0x4C0D, 0x4C0F
+ .2byte 0x4C10, 0x4C12, 0x4C14, 0x4C16, 0x4C17, 0x4C19, 0x4C1B, 0x4C1D
+ .2byte 0x4C1E, 0x4C20, 0x4C22, 0x4C23, 0x4C25, 0x4C27, 0x4C29, 0x4C2A
+ .2byte 0x4C2C, 0x4C2E, 0x4C2F, 0x4C31, 0x4C33, 0x4C34, 0x4C36, 0x4C38
+ .2byte 0x4C3A, 0x4C3B, 0x4C3D, 0x4C3F, 0x4C40, 0x4C42, 0x4C44, 0x4C45
+ .2byte 0x4C47, 0x4C49, 0x4C4A, 0x4C4C, 0x4C4E, 0x4C4F, 0x4C51, 0x4C52
+ .2byte 0x4C54, 0x4C56, 0x4C57, 0x4C59, 0x4C5B, 0x4C5C, 0x4C5E, 0x4C5F
+ .2byte 0x4C61, 0x4C63, 0x4C64, 0x4C66, 0x4C67, 0x4C69, 0x4C6B, 0x4C6C
+ .2byte 0x4C6E, 0x4C6F, 0x4C71, 0x4C73, 0x4C74, 0x4C76, 0x4C77, 0x4C79
+ .2byte 0x4C7A, 0x4C7C, 0x4C7E, 0x4C7F, 0x4C81, 0x4C82, 0x4C84, 0x4C85
+ .2byte 0x4C87, 0x4C88, 0x4C8A, 0x4C8C, 0x4C8D, 0x4C8F, 0x4C90, 0x4C92
+ .2byte 0x4C93, 0x4C95, 0x4C96, 0x4C98, 0x4C99, 0x4C9B, 0x4C9C, 0x4C9E
+ .2byte 0x4C9F, 0x4CA1, 0x4CA2, 0x4CA4, 0x4CA5, 0x4CA7, 0x4CA8, 0x4CAA
+ .2byte 0x4CAB, 0x4CAD, 0x4CAE, 0x4CAF, 0x4CB1, 0x4CB2, 0x4CB4, 0x4CB5
+ .2byte 0x4CB7, 0x4CB8, 0x4CBA, 0x4CBB, 0x4CBD, 0x4CBE, 0x4CBF, 0x4CC1
+ .2byte 0x4CC2, 0x4CC4, 0x4CC5, 0x4CC7, 0x4CC8, 0x4CC9, 0x4CCB, 0x4CCC
+ .2byte 0x4CCE, 0x4CCF, 0x4CD0, 0x4CD2, 0x4CD3, 0x4CD5, 0x4CD6, 0x4CD7
+ .2byte 0x4CD9, 0x4CDA, 0x4CDC, 0x4CDD, 0x4CDE, 0x4CE0, 0x4CE1, 0x4CE2
+ .2byte 0x4CE4, 0x4CE5, 0x4CE6, 0x4CE8, 0x4CE9, 0x4CEA, 0x4CEC, 0x4CED
+ .2byte 0x4CEE, 0x4CF0, 0x4CF1, 0x4CF2, 0x4CF4, 0x4CF5, 0x4CF6, 0x4CF8
+ .2byte 0x4CF9, 0x4CFA, 0x4CFC, 0x4CFD, 0x4CFE, 0x4D00, 0x4D01, 0x4D02
+ .2byte 0x4D03, 0x4D05, 0x4D06, 0x4D07, 0x4D09, 0x4D0A, 0x4D0B, 0x4D0C
+ .2byte 0x4D0E, 0x4D0F, 0x4D10, 0x4D11, 0x4D13, 0x4D14, 0x4D15, 0x4D16
+ .2byte 0x4D18, 0x4D19, 0x4D1A, 0x4D1B, 0x4D1D, 0x4D1E, 0x4D1F, 0x4D20
+ .2byte 0x4D22, 0x4D23, 0x4D24, 0x4D25, 0x4D26, 0x4D28, 0x4D29, 0x4D2A
+ .2byte 0x4D2B, 0x4D2C, 0x4D2E, 0x4D2F, 0x4D30, 0x4D31, 0x4D32, 0x4D33
+ .2byte 0x4D35, 0x4D36, 0x4D37, 0x4D38, 0x4D39, 0x4D3A, 0x4D3C, 0x4D3D
+ .2byte 0x4D3E, 0x4D3F, 0x4D40, 0x4D41, 0x4D43, 0x4D44, 0x4D45, 0x4D46
+ .2byte 0x4D47, 0x4D48, 0x4D49, 0x4D4A, 0x4D4C, 0x4D4D, 0x4D4E, 0x4D4F
+ .2byte 0x4D50, 0x4D51, 0x4D52, 0x4D53, 0x4D54, 0x4D55, 0x4D57, 0x4D58
+ .2byte 0x4D59, 0x4D5A, 0x4D5B, 0x4D5C, 0x4D5D, 0x4D5E, 0x4D5F, 0x4D60
+ .2byte 0x4D61, 0x4D62, 0x4D63, 0x4D64, 0x4D65, 0x4D66, 0x4D67, 0x4D69
+ .2byte 0x4D6A, 0x4D6B, 0x4D6C, 0x4D6D, 0x4D6E, 0x4D6F, 0x4D70, 0x4D71
+ .2byte 0x4D72, 0x4D73, 0x4D74, 0x4D75, 0x4D76, 0x4D77, 0x4D78, 0x4D79
+ .2byte 0x4D7A, 0x4D7B, 0x4D7C, 0x4D7D, 0x4D7E, 0x4D7F, 0x4D80, 0x4D81
+ .2byte 0x4D81, 0x4D82, 0x4D83, 0x4D84, 0x4D85, 0x4D86, 0x4D87, 0x4D88
+ .2byte 0x4D89, 0x4D8A, 0x4D8B, 0x4D8C, 0x4D8D, 0x4D8E, 0x4D8F, 0x4D90
+ .2byte 0x4D91, 0x4D91, 0x4D92, 0x4D93, 0x4D94, 0x4D95, 0x4D96, 0x4D97
+ .2byte 0x4D98, 0x4D99, 0x4D9A, 0x4D9A, 0x4D9B, 0x4D9C, 0x4D9D, 0x4D9E
+ .2byte 0x4D9F, 0x4DA0, 0x4DA1, 0x4DA1, 0x4DA2, 0x4DA3, 0x4DA4, 0x4DA5
+ .2byte 0x4DA6, 0x4DA6, 0x4DA7, 0x4DA8, 0x4DA9, 0x4DAA, 0x4DAB, 0x4DAB
+ .2byte 0x4DAC, 0x4DAD, 0x4DAE, 0x4DAF, 0x4DB0, 0x4DB0, 0x4DB1, 0x4DB2
+ .2byte 0x4DB3, 0x4DB4, 0x4DB4, 0x4DB5, 0x4DB6, 0x4DB7, 0x4DB8, 0x4DB8
+ .2byte 0x4DB9, 0x4DBA, 0x4DBB, 0x4DBB, 0x4DBC, 0x4DBD, 0x4DBE, 0x4DBE
+ .2byte 0x4DBF, 0x4DC0, 0x4DC1, 0x4DC1, 0x4DC2, 0x4DC3, 0x4DC4, 0x4DC4
+ .2byte 0x4DC5, 0x4DC6, 0x4DC7, 0x4DC7, 0x4DC8, 0x4DC9, 0x4DC9, 0x4DCA
+ .2byte 0x4DCB, 0x4DCC, 0x4DCC, 0x4DCD, 0x4DCE, 0x4DCE, 0x4DCF, 0x4DD0
+ .2byte 0x4DD0, 0x4DD1, 0x4DD2, 0x4DD2, 0x4DD3, 0x4DD4, 0x4DD4, 0x4DD5
+ .2byte 0x4DD6, 0x4DD6, 0x4DD7, 0x4DD8, 0x4DD8, 0x4DD9, 0x4DDA, 0x4DDA
+ .2byte 0x4DDB, 0x4DDC, 0x4DDC, 0x4DDD, 0x4DDD, 0x4DDE, 0x4DDF, 0x4DDF
+ .2byte 0x4DE0, 0x4DE1, 0x4DE1, 0x4DE2, 0x4DE2, 0x4DE3, 0x4DE4, 0x4DE4
+ .2byte 0x4DE5, 0x4DE5, 0x4DE6, 0x4DE6, 0x4DE7, 0x4DE8, 0x4DE8, 0x4DE9
+ .2byte 0x4DE9, 0x4DEA, 0x4DEA, 0x4DEB, 0x4DEC, 0x4DEC, 0x4DED, 0x4DED
+ .2byte 0x4DEE, 0x4DEE, 0x4DEF, 0x4DEF, 0x4DF0, 0x4DF0, 0x4DF1, 0x4DF1
+ .2byte 0x4DF2, 0x4DF2, 0x4DF3, 0x4DF3, 0x4DF4, 0x4DF5, 0x4DF5, 0x4DF6
+ .2byte 0x4DF6, 0x4DF6, 0x4DF7, 0x4DF7, 0x4DF8, 0x4DF8, 0x4DF9, 0x4DF9
+ .2byte 0x4DFA, 0x4DFA, 0x4DFB, 0x4DFB, 0x4DFC, 0x4DFC, 0x4DFD, 0x4DFD
+ .2byte 0x4DFE, 0x4DFE, 0x4DFE, 0x4DFF, 0x4DFF, 0x4E00, 0x4E00, 0x4E01
+ .2byte 0x4E01, 0x4E01, 0x4E02, 0x4E02, 0x4E03, 0x4E03, 0x4E03, 0x4E04
+ .2byte 0x4E04, 0x4E05, 0x4E05, 0x4E05, 0x4E06, 0x4E06, 0x4E07, 0x4E07
+ .2byte 0x4E07, 0x4E08, 0x4E08, 0x4E09, 0x4E09, 0x4E09, 0x4E0A, 0x4E0A
+ .2byte 0x4E0A, 0x4E0B, 0x4E0B, 0x4E0B, 0x4E0C, 0x4E0C, 0x4E0C, 0x4E0D
+ .2byte 0x4E0D, 0x4E0D, 0x4E0E, 0x4E0E, 0x4E0E, 0x4E0F, 0x4E0F, 0x4E0F
+ .2byte 0x4E10, 0x4E10, 0x4E10, 0x4E10, 0x4E11, 0x4E11, 0x4E11, 0x4E12
+ .2byte 0x4E12, 0x4E12, 0x4E13, 0x4E13, 0x4E13, 0x4E13, 0x4E14, 0x4E14
+ .2byte 0x4E14, 0x4E14, 0x4E15, 0x4E15, 0x4E15, 0x4E15, 0x4E16, 0x4E16
+ .2byte 0x4E16, 0x4E16, 0x4E17, 0x4E17, 0x4E17, 0x4E17, 0x4E17, 0x4E18
+ .2byte 0x4E18, 0x4E18, 0x4E18, 0x4E18, 0x4E19, 0x4E19, 0x4E19, 0x4E19
+ .2byte 0x4E19, 0x4E1A, 0x4E1A, 0x4E1A, 0x4E1A, 0x4E1A, 0x4E1B, 0x4E1B
+ .2byte 0x4E1B, 0x4E1B, 0x4E1B, 0x4E1B, 0x4E1C, 0x4E1C, 0x4E1C, 0x4E1C
+ .2byte 0x4E1C, 0x4E1C, 0x4E1C, 0x4E1D, 0x4E1D, 0x4E1D, 0x4E1D, 0x4E1D
+ .2byte 0x4E1D, 0x4E1D, 0x4E1D, 0x4E1D, 0x4E1E, 0x4E1E, 0x4E1E, 0x4E1E
+ .2byte 0x4E1E, 0x4E1E, 0x4E1E, 0x4E1E, 0x4E1E, 0x4E1E, 0x4E1F, 0x4E1F
+ .2byte 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F
+ .2byte 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F
+ .2byte 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F, 0x4E1F
+ .2byte 0x4E20
gEmptyOamData:: @ 0x08057C46
.4byte 0x00F000F4, 0x00000000
@@ -207,7 +720,23 @@ gGBAButtonIcons_Pals:: @ 0x0852B668
gOptionsSprites_Gfx:: @ 0x0852B868
.incbin "graphics/options/sprites.4bpp"
-.incbin "baserom.gba", 0x52D888, 0x6A4AD8 - 0x52D888
+.incbin "baserom.gba", 0x52D888, 0x6A4AA0 - 0x52D888
+
+gIntrTableTemplate:: @ 0x086A4AA0
+ .4byte SerialIntr
+ .4byte Timer3Intr
+ .4byte HBlankIntr
+ .4byte IntrDummy
+ .4byte VCountIntr
+ .4byte IntrDummy
+ .4byte IntrDummy
+ .4byte IntrDummy
+ .4byte IntrDummy
+ .4byte IntrDummy
+ .4byte IntrDummy
+ .4byte IntrDummy
+ .4byte IntrDummy
+ .4byte IntrDummy
gMainFuncs:: @ 0x086A4AD8
.4byte IntroMain
diff --git a/include/main.h b/include/main.h
index a25afdb..a0162b7 100755
--- a/include/main.h
+++ b/include/main.h
@@ -7,6 +7,7 @@
#define MAX_SPRITES_IN_GROUP 22
typedef void (*StateFunc)(void);
+typedef void (*IntrFunc)(void);
struct MainUnk2E8
{
@@ -53,18 +54,24 @@ struct Main
/*0x18*/ u16 newKeys;
/*0x1A*/ u16 releasedKeys;
/*0x1C*/ u16 heldKeys;
- /*0x1E*/ u8 filler1E[0x8];
+ /*0x1E*/ u8 filler1E[0x2];
+ /*0x20*/ u16 unk20;
+ /*0x22*/ u8 filler22[0x4];
/*0x26*/ s16 vCount;
/*0x28*/ s16 unk28;
/*0x2A*/ s16 unk2A;
/*0x2C*/ s16 unk2C;
- /*0x2E*/ u8 filler2E[0x8];
+ /*0x2E*/ u8 filler2E[0x2];
+ /*0x30*/ u16 unk30;
+ /*0x32*/ u8 filler32[0x4];
/*0x36*/ u8 unk36;
/*0x38*/ volatile u16 blendControl;
/*0x3A*/ volatile u16 blendAlpha;
- /*0x3C*/ volatile u16 unk3C;
+ /*0x3C*/ volatile u16 blendBrightness;
/*0x40*/ int unk40;
- /*0x44*/ u8 filler44[0xC];
+ /*0x44*/ u8 filler44[0x4];
+ /*0x48*/ int rngValue;
+ /*0x4C*/ int unk4C;
/*0x50*/ int unk50;
/*0x54*/ u8 filler54[0x294];
/*0x2E8*/ struct MainUnk2E8 unk2E8[4];
diff --git a/src/main.c b/src/main.c
index e178233..a6f56be 100755
--- a/src/main.c
+++ b/src/main.c
@@ -2,20 +2,43 @@
#include "m4a.h"
#include "main.h"
+extern void sub_438(void);
+extern void sub_8BC(void);
+extern void sub_8FC(void);
+extern void sub_940(void);
extern void sub_B54(void);
-extern void sub_BBC(void);
+extern void sub_B8C(void);
+static void InitIntrHandlers(void);
extern void sub_CBC(void);
extern void sub_D10(void);
extern void sub_D74(void);
extern void sub_FE8(void);
extern void ReadKeys(void);
+extern void sub_1F4C(void);
+extern void sub_1F5C(void);
+extern void sub_1090C(void);
+extern void sub_52A18(void);
extern u32 IntrMain_Buffer[0x200];
extern u32 IntrMain[];
+extern IntrFunc *gUnknown_0200FB98;
+extern IntrFunc *gUnknown_02019BE0;
+
+extern const IntrFunc gIntrTableTemplate[14];
+#define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc)))
+extern IntrFunc gIntrTable[INTR_COUNT];
+extern void (*gUnknown_0200FB9C)(void);
+extern void (*gUnknown_0200FBA0)(void);
+extern void (*gUnknown_02017BD0)(void);
+extern void (*gUnknown_02017BD4)(void);
+extern u16 gUnknown_02002000;
+extern u16 gUnknown_02002002;
+
+extern s16 gUnknown_08055C44[];
void AgbMain(void)
{
RegisterRamReset(0xFF);
- sub_BBC();
+ InitIntrHandlers();
DmaCopy32(3, IntrMain, IntrMain_Buffer, sizeof(IntrMain_Buffer));
INTR_VECTOR = IntrMain_Buffer;
sub_B54();
@@ -49,13 +72,13 @@ void sub_9BC_Main(void)
}
}
-void sub_A08(void)
+void HBlankIntr(void)
{
m4aSoundVSync();
INTR_CHECK |= INTR_FLAG_VBLANK;
}
-void sub_A20(void)
+void VCountIntr(void)
{
INTR_CHECK |= INTR_FLAG_VCOUNT;
while (!(REG_DISPSTAT & DISPSTAT_HBLANK));
@@ -111,3 +134,261 @@ void sub_A20(void)
}
}
}
+
+void SerialIntr(void)
+{
+ sub_1F5C();
+}
+
+void Timer3Intr(void)
+{
+ sub_1F4C();
+}
+
+void IntrDummy(void)
+{
+}
+
+void sub_B54(void)
+{
+ REG_WAITCNT = WAITCNT_AGB
+ | WAITCNT_PREFETCH_ENABLE
+ | WAITCNT_PHI_OUT_NONE
+ | WAITCNT_WS2_S_1
+ | WAITCNT_WS2_N_3
+ | WAITCNT_WS1_S_1
+ | WAITCNT_WS1_N_3
+ | WAITCNT_WS0_S_1
+ | WAITCNT_WS0_N_3
+ | WAITCNT_SRAM_2;
+ REG_IE = INTR_FLAG_GAMEPAK;
+ REG_IME = INTR_FLAG_VBLANK;
+ sub_B8C();
+ m4aSoundInit();
+ m4aSoundVSyncOff();
+ sub_52A18();
+}
+
+void sub_B8C(void)
+{
+ gMain.mainState = 0;
+ gMain.subState = 0;
+ gMain.unk16 = 0;
+ gMain.heldKeys = 0;
+ gMain.newKeys = 0;
+ gMain.unk20 = 0;
+ gMain.rngValue = 0;
+ gMain.unk4C = 0;
+ gMain.unk30 = 0;
+ gMain.vCount = 144;
+ gMain.unk2C = 0;
+ sub_1090C();
+ sub_438();
+}
+
+static void InitIntrHandlers(void)
+{
+ int i;
+
+ for (i = 0; i < INTR_COUNT; i++)
+ gIntrTable[i] = gIntrTableTemplate[i];
+
+ gUnknown_0200FB98 = &gIntrTable[2];
+ gUnknown_02019BE0 = &gIntrTable[4];
+ sub_8BC();
+ sub_8FC();
+ sub_940();
+}
+
+// The number 1103515245 comes from the example implementation of rand and srand
+// in the ISO C standard.
+int Random(void)
+{
+ gMain.rngValue = 1103515245 * gMain.rngValue + 12345;
+ return gMain.rngValue & 0xFFFF;
+}
+
+#ifdef NONMATCHING
+s16 sub_C24(u16 arg0)
+{
+ u16 index = arg0 / 4;
+ s16 var0 = 1;
+ if (index > 0x1FFF)
+ {
+ index -= 0x2000;
+ var0 = -1;
+ }
+
+ if (index > 0xFFF)
+ index = 0x2000 - index;
+
+ return gUnknown_08055C44[index] * var0;
+}
+#else
+NAKED
+s16 sub_C24(u16 arg0)
+{
+ asm_unified("\n\
+ lsls r0, r0, #0x10\n\
+ lsrs r2, r0, #0x12\n\
+ movs r3, #1\n\
+ ldr r0, _08000C60 @ =0x00001FFF\n\
+ cmp r2, r0\n\
+ bls _08000C3A\n\
+ ldr r1, _08000C64 @ =0xFFFFE000\n\
+ adds r0, r2, r1\n\
+ lsls r0, r0, #0x10\n\
+ lsrs r2, r0, #0x10\n\
+ ldr r3, _08000C68 @ =0x0000FFFF\n\
+_08000C3A:\n\
+ ldr r0, _08000C6C @ =0x00000FFF\n\
+ cmp r2, r0\n\
+ bls _08000C4C\n\
+ movs r1, #0x80\n\
+ lsls r1, r1, #6\n\
+ adds r0, r1, #0\n\
+ subs r0, r0, r2\n\
+ lsls r0, r0, #0x10\n\
+ lsrs r2, r0, #0x10\n\
+_08000C4C:\n\
+ ldr r1, _08000C70 @ =0x08055C44\n\
+ lsls r0, r2, #1\n\
+ adds r0, r0, r1\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r3, #0x10\n\
+ asrs r0, r0, #0x10\n\
+ muls r0, r1, r0\n\
+ lsls r0, r0, #0x10\n\
+ asrs r0, r0, #0x10\n\
+ bx lr\n\
+ .align 2, 0\n\
+_08000C60: .4byte 0x00001FFF\n\
+_08000C64: .4byte 0xFFFFE000\n\
+_08000C68: .4byte 0x0000FFFF\n\
+_08000C6C: .4byte 0x00000FFF\n\
+_08000C70: .4byte 0x08055C44");
+}
+#endif // NONMATCHING
+
+s16 sub_C74(u16 arg0)
+{
+ return sub_C24(arg0 + 0x4000);
+}
+
+void ReadKeys(void)
+{
+ u16 keyInput = ~REG_KEYINPUT;
+ gMain.newKeys = keyInput & (keyInput ^ gMain.heldKeys);
+ gMain.releasedKeys = gMain.heldKeys & (keyInput ^ gMain.heldKeys);
+ gMain.heldKeys = keyInput;
+}
+
+void sub_CBC(void)
+{
+ if (!(REG_IE & INTR_FLAG_VBLANK))
+ {
+ REG_IF |= INTR_FLAG_VCOUNT | INTR_FLAG_VBLANK;
+ REG_IE &= INTR_FLAG_VBLANK
+ | INTR_FLAG_HBLANK
+ | INTR_FLAG_VCOUNT
+ | INTR_FLAG_TIMER0
+ | INTR_FLAG_TIMER1
+ | INTR_FLAG_TIMER2
+ | INTR_FLAG_TIMER3
+ | INTR_FLAG_SERIAL
+ | INTR_FLAG_DMA0
+ | INTR_FLAG_DMA1
+ | INTR_FLAG_DMA2
+ | INTR_FLAG_DMA3
+ | INTR_FLAG_KEYPAD
+ | INTR_FLAG_GAMEPAK;
+ REG_IME = INTR_FLAG_VBLANK;
+ REG_IE |= INTR_FLAG_VCOUNT | INTR_FLAG_VBLANK;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ m4aSoundVSyncOn();
+ }
+}
+
+void sub_D10(void)
+{
+ REG_DISPSTAT &= ~DISPSTAT_VBLANK_INTR;
+ REG_DISPSTAT &= ~DISPSTAT_VCOUNT_INTR;
+ REG_IE &= INTR_FLAG_VBLANK
+ | INTR_FLAG_HBLANK
+ | INTR_FLAG_VCOUNT
+ | INTR_FLAG_TIMER0
+ | INTR_FLAG_TIMER1
+ | INTR_FLAG_TIMER2
+ | INTR_FLAG_TIMER3
+ | INTR_FLAG_SERIAL
+ | INTR_FLAG_DMA0
+ | INTR_FLAG_DMA1
+ | INTR_FLAG_DMA2
+ | INTR_FLAG_DMA3
+ | INTR_FLAG_KEYPAD
+ | INTR_FLAG_GAMEPAK;
+ REG_IE &= INTR_FLAG_HBLANK
+ | INTR_FLAG_VCOUNT
+ | INTR_FLAG_TIMER0
+ | INTR_FLAG_TIMER1
+ | INTR_FLAG_TIMER2
+ | INTR_FLAG_TIMER3
+ | INTR_FLAG_SERIAL
+ | INTR_FLAG_DMA0
+ | INTR_FLAG_DMA1
+ | INTR_FLAG_DMA2
+ | INTR_FLAG_DMA3
+ | INTR_FLAG_KEYPAD
+ | INTR_FLAG_GAMEPAK;
+ if (!REG_IE)
+ REG_IME = 0;
+
+ REG_IF |= INTR_FLAG_VBLANK;
+ m4aSoundVSyncOff();
+}
+
+void sub_D74(void)
+{
+ gUnknown_0200FB9C = gUnknown_02017BD4;
+ *gUnknown_0200FB98 = gUnknown_02017BD0;
+ *gUnknown_02019BE0 = gUnknown_0200FBA0;
+ if (gUnknown_0200FB9C)
+ gUnknown_0200FB9C();
+
+ gMain.unk4C++;
+}
+
+void sub_DC4(void)
+{
+ if (REG_DISPSTAT & DISPSTAT_VBLANK_INTR)
+ {
+ VBlankIntrWait();
+ DmaCopy32(3, gOamBuffer, (void *)OAM, OAM_SIZE);
+ REG_DISPCNT = gMain.unk16;
+ REG_BG0HOFS = gMain.unk2E8[0].unk0;
+ REG_BG0VOFS = gMain.unk2E8[0].unk2;
+ REG_BG1HOFS = gMain.unk2E8[1].unk0;
+ REG_BG1VOFS = gMain.unk2E8[1].unk2;
+ REG_BG2HOFS = gMain.unk2E8[2].unk0;
+ REG_BG2VOFS = gMain.unk2E8[2].unk2;
+ REG_BG3HOFS = gMain.unk2E8[3].unk0;
+ REG_BG3VOFS = gMain.unk2E8[3].unk2;
+ if (gMain.unk36)
+ {
+ REG_BLDCNT = gMain.blendControl;
+ REG_BLDALPHA = gMain.blendAlpha;
+ REG_BLDY = gMain.blendBrightness;
+ }
+
+ REG_DISPSTAT &= 0xFF;
+ REG_DISPSTAT |= (gMain.vCount << 8) + DISPSTAT_VCOUNT_INTR;
+ m4aSoundMain();
+ }
+}
+
+void sub_E90(void)
+{
+ u16 keyInput = REG_KEYINPUT ^ KEYS_MASK;
+ gUnknown_02002002 = gUnknown_02002000;
+ gUnknown_02002000 = keyInput;
+}
diff --git a/src/rom_850.c b/src/rom_850.c
index 8d49a60..97fed1f 100755
--- a/src/rom_850.c
+++ b/src/rom_850.c
@@ -1,14 +1,14 @@
#include "global.h"
#include "main.h"
-extern void (**gUnknown_0200FB98)(void);
-extern void (**gUnknown_02019BE0)(void);
+extern IntrFunc *gUnknown_0200FB98;
+extern IntrFunc *gUnknown_02019BE0;
extern void (*gUnknown_0200FB9C)(void);
extern void (*gUnknown_0200FBA0)(void);
extern void (*gUnknown_02017BD0)(void);
extern void (*gUnknown_02017BD4)(void);
-extern void sub_A08(void);
-extern void sub_A20(void);
+extern void HBlankIntr(void);
+extern void VCountIntr(void);
extern void sub_DC4(void);
u16 sub_850(void)
@@ -48,8 +48,8 @@ void sub_8D4(void (*func)(void))
void sub_8FC(void)
{
- *gUnknown_0200FB98 = sub_A08;
- gUnknown_02017BD0 = sub_A08;
+ *gUnknown_0200FB98 = HBlankIntr;
+ gUnknown_02017BD0 = HBlankIntr;
}
void sub_918(void (*func)(void))
@@ -61,7 +61,7 @@ void sub_918(void (*func)(void))
void sub_940(void)
{
- *gUnknown_02019BE0 = sub_A20;
- gUnknown_0200FBA0 = sub_A20;
+ *gUnknown_02019BE0 = VCountIntr;
+ gUnknown_0200FBA0 = VCountIntr;
}
diff --git a/src/util.c b/src/util.c
index fa72a93..b1af27b 100755
--- a/src/util.c
+++ b/src/util.c
@@ -114,7 +114,7 @@ void sub_438(void)
gMain.unk36 = 0;
gMain.blendControl = 0;
gMain.blendAlpha = 0;
- gMain.unk3C = 0;
+ gMain.blendBrightness = 0;
gMain.unk2C = 0;
}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index a185175..4433922 100755
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1,4 +1,12 @@
- .space 0x2888
+ .space 0x2000
+
+gUnknown_02002000: @ 0x2002000
+ .space 2
+
+gUnknown_02002002: @ 0x2002002
+ .space 2
+
+ .space 0x884
gTitlescreen: @ 0x2002888
.space 0x18
@@ -28,8 +36,9 @@ gUnknown_02002958: @ 0x2002958
.space 0x708
gIntrTable: @ 0x2003060
+ .space 0x38
- .space 0x8060
+ .space 0x8028
gMain: @ 0x200B0C0