text_window

This commit is contained in:
PikalaxALT 2019-05-20 11:09:41 -04:00
parent 68ac134c0c
commit 348bd19fdd
16 changed files with 254 additions and 1911 deletions

View File

@ -1,948 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_814FD04
sub_814FD04: @ 814FD04
push {r4,lr}
adds r3, r1, 0
adds r4, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r3, 16
lsrs r3, 16
lsls r4, 24
lsrs r4, 24
ldr r1, _0814FD34 @ =gUnknown_84566A8
movs r2, 0xA0
lsls r2, 2
bl LoadBgTiles
movs r0, 0x2
bl stdpal_get
adds r1, r4, 0
movs r2, 0x20
bl LoadPalette
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814FD34: .4byte gUnknown_84566A8
thumb_func_end sub_814FD04
thumb_func_start sub_814FD38
sub_814FD38: @ 814FD38
push {r4,lr}
adds r3, r1, 0
adds r4, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r3, 16
lsrs r3, 16
lsls r4, 24
lsrs r4, 24
ldr r1, _0814FD68 @ =gUnknown_841F1C8
movs r2, 0xA0
lsls r2, 2
bl LoadBgTiles
movs r0, 0
bl stdpal_get
adds r1, r4, 0
movs r2, 0x20
bl LoadPalette
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814FD68: .4byte gUnknown_841F1C8
thumb_func_end sub_814FD38
thumb_func_start sub_814FD6C
sub_814FD6C: @ 814FD6C
push {r4,lr}
adds r3, r1, 0
adds r4, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r3, 16
lsrs r3, 16
lsls r4, 24
lsrs r4, 24
ldr r1, _0814FD9C @ =gUnknown_8470B0C
movs r2, 0x98
lsls r2, 2
bl LoadBgTiles
movs r0, 0x1
bl stdpal_get
adds r1, r4, 0
movs r2, 0x20
bl LoadPalette
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814FD9C: .4byte gUnknown_8470B0C
thumb_func_end sub_814FD6C
thumb_func_start sub_814FDA0
sub_814FDA0: @ 814FDA0
push {r4,lr}
adds r3, r1, 0
adds r4, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r3, 16
lsrs r3, 16
lsls r4, 24
lsrs r4, 24
ldr r1, _0814FDD0 @ =gUnknown_8471A4C
movs r2, 0x90
lsls r2, 1
bl LoadBgTiles
movs r0, 0x3
bl stdpal_get
adds r1, r4, 0
movs r2, 0x20
bl LoadPalette
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814FDD0: .4byte gUnknown_8471A4C
thumb_func_end sub_814FDA0
thumb_func_start sub_814FDD4
sub_814FDD4: @ 814FDD4
push {lr}
adds r3, r1, 0
lsls r0, 24
lsrs r0, 24
lsls r3, 16
lsrs r3, 16
ldr r1, _0814FDF0 @ =gUnknown_8471B6C
movs r2, 0xA0
lsls r2, 2
bl LoadBgTiles
pop {r0}
bx r0
.align 2, 0
_0814FDF0: .4byte gUnknown_8471B6C
thumb_func_end sub_814FDD4
thumb_func_start sub_814FDF4
sub_814FDF4: @ 814FDF4
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r4, r1, 0
adds r6, r2, 0
mov r8, r3
lsls r0, 24
lsrs r0, 24
lsls r4, 24
lsls r6, 16
lsrs r6, 16
mov r1, r8
lsls r1, 24
lsrs r1, 24
mov r8, r1
ldr r5, _0814FE3C @ =gUnknown_8471E8C
lsrs r4, 21
adds r1, r4, r5
ldr r1, [r1]
movs r2, 0x90
lsls r2, 1
adds r3, r6, 0
bl LoadBgTiles
adds r5, 0x4
adds r4, r5
ldr r0, [r4]
mov r1, r8
movs r2, 0x20
bl LoadPalette
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0814FE3C: .4byte gUnknown_8471E8C
thumb_func_end sub_814FDF4
thumb_func_start LoadUserWindowBorderGfx
LoadUserWindowBorderGfx: @ 814FE40
push {r4,lr}
adds r4, r1, 0
adds r3, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r4, 16
lsrs r4, 16
lsls r3, 24
lsrs r3, 24
ldr r1, _0814FE68 @ =gSaveBlock2Ptr
ldr r1, [r1]
ldrb r1, [r1, 0x14]
lsrs r1, 3
adds r2, r4, 0
bl sub_814FFC4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814FE68: .4byte gSaveBlock2Ptr
thumb_func_end LoadUserWindowBorderGfx
thumb_func_start sub_814FE6C
sub_814FE6C: @ 814FE6C
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r4, 16
lsrs r4, 16
lsls r5, 24
lsrs r5, 24
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r0, 24
ldr r1, _0814FEA8 @ =gUnknown_84566A8
movs r2, 0xA0
lsls r2, 2
adds r3, r4, 0
bl LoadBgTiles
movs r0, 0x2
bl stdpal_get
adds r1, r5, 0
movs r2, 0x20
bl LoadPalette
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0814FEA8: .4byte gUnknown_84566A8
thumb_func_end sub_814FE6C
thumb_func_start sub_814FEAC
sub_814FEAC: @ 814FEAC
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r4, 16
lsrs r4, 16
lsls r5, 24
lsrs r5, 24
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r0, 24
ldr r1, _0814FEE8 @ =gUnknown_841F1C8
movs r2, 0xA0
lsls r2, 2
adds r3, r4, 0
bl LoadBgTiles
movs r0, 0
bl stdpal_get
adds r1, r5, 0
movs r2, 0x20
bl LoadPalette
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0814FEE8: .4byte gUnknown_841F1C8
thumb_func_end sub_814FEAC
thumb_func_start sub_814FEEC
sub_814FEEC: @ 814FEEC
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r4, 16
lsrs r4, 16
lsls r5, 24
lsrs r5, 24
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r0, 24
ldr r1, _0814FF28 @ =gUnknown_8470B0C
movs r2, 0x98
lsls r2, 2
adds r3, r4, 0
bl LoadBgTiles
movs r0, 0x1
bl stdpal_get
adds r1, r5, 0
movs r2, 0x20
bl LoadPalette
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0814FF28: .4byte gUnknown_8470B0C
thumb_func_end sub_814FEEC
thumb_func_start sub_814FF2C
sub_814FF2C: @ 814FF2C
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r4, 16
lsrs r4, 16
lsls r5, 24
lsrs r5, 24
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r0, 24
ldr r1, _0814FF68 @ =gUnknown_8471A4C
movs r2, 0x90
lsls r2, 1
adds r3, r4, 0
bl LoadBgTiles
movs r0, 0x3
bl stdpal_get
adds r1, r5, 0
movs r2, 0x20
bl LoadPalette
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0814FF68: .4byte gUnknown_8471A4C
thumb_func_end sub_814FF2C
thumb_func_start sub_814FF6C
sub_814FF6C: @ 814FF6C
push {r4,lr}
adds r4, r1, 0
lsls r0, 24
lsrs r0, 24
lsls r4, 16
lsrs r4, 16
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r0, 24
ldr r1, _0814FF94 @ =gUnknown_8471A4C
movs r2, 0x90
lsls r2, 1
adds r3, r4, 0
bl LoadBgTiles
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814FF94: .4byte gUnknown_8471A4C
thumb_func_end sub_814FF6C
thumb_func_start sub_814FF98
sub_814FF98: @ 814FF98
push {r4,lr}
adds r4, r1, 0
lsls r0, 24
lsrs r0, 24
lsls r4, 16
lsrs r4, 16
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r0, 24
ldr r1, _0814FFC0 @ =gUnknown_8471B6C
movs r2, 0xA0
lsls r2, 2
adds r3, r4, 0
bl LoadBgTiles
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814FFC0: .4byte gUnknown_8471B6C
thumb_func_end sub_814FF98
thumb_func_start sub_814FFC4
sub_814FFC4: @ 814FFC4
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r4, r1, 0
adds r6, r2, 0
mov r8, r3
lsls r0, 24
lsrs r0, 24
lsls r4, 24
lsrs r4, 24
lsls r6, 16
lsrs r6, 16
mov r1, r8
lsls r1, 24
lsrs r1, 24
mov r8, r1
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r0, 24
ldr r5, _08150018 @ =gUnknown_8471E8C
lsls r4, 3
adds r1, r4, r5
ldr r1, [r1]
movs r2, 0x90
lsls r2, 1
adds r3, r6, 0
bl LoadBgTiles
adds r5, 0x4
adds r4, r5
ldr r0, [r4]
mov r1, r8
movs r2, 0x20
bl LoadPalette
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08150018: .4byte gUnknown_8471E8C
thumb_func_end sub_814FFC4
thumb_func_start sub_815001C
sub_815001C: @ 815001C
push {r4,lr}
adds r4, r1, 0
adds r3, r2, 0
lsls r0, 24
lsrs r0, 24
lsls r4, 16
lsrs r4, 16
lsls r3, 24
lsrs r3, 24
ldr r1, _08150044 @ =gSaveBlock2Ptr
ldr r1, [r1]
ldrb r1, [r1, 0x14]
lsrs r1, 3
adds r2, r4, 0
bl sub_814FFC4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08150044: .4byte gSaveBlock2Ptr
thumb_func_end sub_815001C
thumb_func_start DrawTextBorderOuter
DrawTextBorderOuter: @ 8150048
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
adds r4, r0, 0
adds r5, r1, 0
lsls r4, 24
lsrs r4, 24
lsls r5, 16
lsrs r5, 16
lsls r2, 24
lsrs r2, 24
str r2, [sp, 0xC]
adds r0, r4, 0
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r7, r0, 24
adds r0, r4, 0
movs r1, 0x1
bl GetWindowAttribute
mov r8, r0
lsls r0, 16
lsrs r0, 16
mov r8, r0
adds r0, r4, 0
movs r1, 0x2
bl GetWindowAttribute
adds r6, r0, 0
lsls r6, 16
lsrs r6, 16
adds r0, r4, 0
movs r1, 0x3
bl GetWindowAttribute
mov r9, r0
mov r2, r9
lsls r2, 16
lsrs r2, 16
mov r9, r2
adds r0, r4, 0
movs r1, 0x4
bl GetWindowAttribute
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0x10]
mov r0, r8
subs r0, 0x1
lsls r2, r0, 24
lsrs r2, 24
str r2, [sp, 0x14]
subs r4, r6, 0x1
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
mov r10, r0
str r0, [sp]
str r0, [sp, 0x4]
ldr r2, [sp, 0xC]
str r2, [sp, 0x8]
adds r0, r7, 0
adds r1, r5, 0
ldr r2, [sp, 0x14]
adds r3, r4, 0
bl FillBgTilemapBufferRect
adds r1, r5, 0x1
lsls r1, 16
lsrs r1, 16
mov r0, r8
lsls r2, r0, 24
lsrs r2, 24
str r2, [sp, 0x18]
mov r2, r9
lsls r0, r2, 24
lsrs r0, 24
str r0, [sp, 0x1C]
str r0, [sp]
mov r0, r10
str r0, [sp, 0x4]
ldr r2, [sp, 0xC]
str r2, [sp, 0x8]
adds r0, r7, 0
ldr r2, [sp, 0x18]
adds r3, r4, 0
bl FillBgTilemapBufferRect
adds r1, r5, 0x2
lsls r1, 16
lsrs r1, 16
add r8, r9
mov r0, r8
lsls r0, 24
lsrs r0, 24
mov r8, r0
mov r2, r10
str r2, [sp]
str r2, [sp, 0x4]
ldr r0, [sp, 0xC]
str r0, [sp, 0x8]
adds r0, r7, 0
mov r2, r8
adds r3, r4, 0
bl FillBgTilemapBufferRect
adds r1, r5, 0x3
lsls r1, 16
lsrs r1, 16
lsls r2, r6, 24
lsrs r2, 24
mov r9, r2
mov r0, r10
str r0, [sp]
ldr r2, [sp, 0x10]
lsls r4, r2, 24
lsrs r4, 24
str r4, [sp, 0x4]
ldr r0, [sp, 0xC]
str r0, [sp, 0x8]
adds r0, r7, 0
ldr r2, [sp, 0x14]
mov r3, r9
bl FillBgTilemapBufferRect
adds r1, r5, 0x5
lsls r1, 16
lsrs r1, 16
mov r2, r10
str r2, [sp]
str r4, [sp, 0x4]
ldr r0, [sp, 0xC]
str r0, [sp, 0x8]
adds r0, r7, 0
mov r2, r8
mov r3, r9
bl FillBgTilemapBufferRect
adds r1, r5, 0x6
lsls r1, 16
lsrs r1, 16
ldr r2, [sp, 0x10]
adds r6, r2
lsls r6, 24
lsrs r6, 24
mov r0, r10
str r0, [sp]
str r0, [sp, 0x4]
ldr r2, [sp, 0xC]
str r2, [sp, 0x8]
adds r0, r7, 0
ldr r2, [sp, 0x14]
adds r3, r6, 0
bl FillBgTilemapBufferRect
adds r1, r5, 0x7
lsls r1, 16
lsrs r1, 16
ldr r0, [sp, 0x1C]
str r0, [sp]
mov r2, r10
str r2, [sp, 0x4]
ldr r0, [sp, 0xC]
str r0, [sp, 0x8]
adds r0, r7, 0
ldr r2, [sp, 0x18]
adds r3, r6, 0
bl FillBgTilemapBufferRect
adds r5, 0x8
lsls r5, 16
lsrs r5, 16
mov r2, r10
str r2, [sp]
str r2, [sp, 0x4]
ldr r0, [sp, 0xC]
str r0, [sp, 0x8]
adds r0, r7, 0
adds r1, r5, 0
mov r2, r8
adds r3, r6, 0
bl FillBgTilemapBufferRect
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end DrawTextBorderOuter
thumb_func_start sub_81501D0
sub_81501D0: @ 81501D0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1C
adds r4, r0, 0
mov r9, r1
lsls r4, 24
lsrs r4, 24
mov r0, r9
lsls r0, 16
lsrs r0, 16
mov r9, r0
lsls r2, 24
lsrs r2, 24
mov r10, r2
adds r0, r4, 0
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r7, r0, 24
adds r0, r4, 0
movs r1, 0x1
bl GetWindowAttribute
mov r8, r0
lsls r0, 16
lsrs r0, 16
mov r8, r0
adds r0, r4, 0
movs r1, 0x2
bl GetWindowAttribute
adds r6, r0, 0
lsls r6, 16
lsrs r6, 16
adds r0, r4, 0
movs r1, 0x3
bl GetWindowAttribute
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
adds r0, r4, 0
movs r1, 0x4
bl GetWindowAttribute
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0xC]
mov r0, r8
lsls r2, r0, 24
lsrs r2, 24
str r2, [sp, 0x10]
lsls r4, r6, 24
lsrs r4, 24
movs r0, 0x1
str r0, [sp]
str r0, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
adds r0, r7, 0
mov r1, r9
adds r3, r4, 0
bl FillBgTilemapBufferRect
mov r1, r9
adds r1, 0x1
lsls r1, 16
lsrs r1, 16
mov r0, r8
adds r0, 0x1
lsls r2, r0, 24
lsrs r2, 24
str r2, [sp, 0x14]
subs r0, r5, 0x2
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x18]
str r0, [sp]
movs r0, 0x1
str r0, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
adds r0, r7, 0
adds r3, r4, 0
bl FillBgTilemapBufferRect
mov r1, r9
adds r1, 0x2
lsls r1, 16
lsrs r1, 16
add r8, r5
movs r0, 0x1
negs r0, r0
add r8, r0
mov r0, r8
lsls r0, 24
lsrs r0, 24
mov r8, r0
movs r0, 0x1
str r0, [sp]
str r0, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
adds r0, r7, 0
mov r2, r8
adds r3, r4, 0
bl FillBgTilemapBufferRect
mov r1, r9
adds r1, 0x3
lsls r1, 16
lsrs r1, 16
adds r5, r6, 0x1
lsls r5, 24
lsrs r5, 24
movs r0, 0x1
str r0, [sp]
ldr r4, [sp, 0xC]
subs r4, 0x2
lsls r4, 24
lsrs r4, 24
str r4, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
adds r0, r7, 0
ldr r2, [sp, 0x10]
adds r3, r5, 0
bl FillBgTilemapBufferRect
mov r1, r9
adds r1, 0x5
lsls r1, 16
lsrs r1, 16
movs r0, 0x1
str r0, [sp]
str r4, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
adds r0, r7, 0
mov r2, r8
adds r3, r5, 0
bl FillBgTilemapBufferRect
mov r1, r9
adds r1, 0x6
lsls r1, 16
lsrs r1, 16
ldr r0, [sp, 0xC]
adds r6, r0
subs r6, 0x1
lsls r6, 24
lsrs r6, 24
movs r0, 0x1
str r0, [sp]
str r0, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
adds r0, r7, 0
ldr r2, [sp, 0x10]
adds r3, r6, 0
bl FillBgTilemapBufferRect
mov r1, r9
adds r1, 0x7
lsls r1, 16
lsrs r1, 16
ldr r0, [sp, 0x18]
str r0, [sp]
movs r0, 0x1
str r0, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
adds r0, r7, 0
ldr r2, [sp, 0x14]
adds r3, r6, 0
bl FillBgTilemapBufferRect
movs r0, 0x8
add r9, r0
mov r0, r9
lsls r0, 16
lsrs r0, 16
mov r9, r0
movs r0, 0x1
str r0, [sp]
str r0, [sp, 0x4]
mov r0, r10
str r0, [sp, 0x8]
adds r0, r7, 0
mov r1, r9
mov r2, r8
adds r3, r6, 0
bl FillBgTilemapBufferRect
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_81501D0
thumb_func_start rbox_fill_rectangle
rbox_fill_rectangle: @ 815036C
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0xC
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
adds r0, r6, 0
movs r1, 0
bl GetWindowAttribute
mov r9, r0
lsls r0, 24
lsrs r0, 24
mov r9, r0
adds r0, r6, 0
movs r1, 0x1
bl GetWindowAttribute
mov r8, r0
mov r1, r8
lsls r1, 16
lsrs r1, 16
mov r8, r1
adds r0, r6, 0
movs r1, 0x2
bl GetWindowAttribute
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
adds r0, r6, 0
movs r1, 0x3
bl GetWindowAttribute
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r6, 0
movs r1, 0x4
bl GetWindowAttribute
movs r1, 0x1
negs r1, r1
add r8, r1
mov r1, r8
lsls r1, 24
lsrs r1, 24
mov r8, r1
subs r5, 0x1
lsls r5, 24
lsrs r5, 24
adds r4, 0x2
lsls r4, 24
lsrs r4, 24
str r4, [sp]
lsls r0, 24
movs r1, 0x80
lsls r1, 18
adds r0, r1
lsrs r0, 24
str r0, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
mov r0, r9
movs r1, 0
mov r2, r8
adds r3, r5, 0
bl FillBgTilemapBufferRect
add sp, 0xC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end rbox_fill_rectangle
thumb_func_start stdpal_get
stdpal_get: @ 8150408
push {lr}
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bhi _08150444
lsls r0, 2
ldr r1, _0815041C @ =_08150420
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0815041C: .4byte _08150420
.align 2, 0
_08150420:
.4byte _08150434
.4byte _08150438
.4byte _0815043C
.4byte _08150440
.4byte _08150444
_08150434:
movs r0, 0
b _08150446
_08150438:
movs r0, 0x10
b _08150446
_0815043C:
movs r0, 0x20
b _08150446
_08150440:
movs r0, 0x30
b _08150446
_08150444:
movs r0, 0x40
_08150446:
lsls r0, 1
ldr r1, _08150450 @ =gUnknown_8471DEC
adds r0, r1
pop {r1}
bx r1
.align 2, 0
_08150450: .4byte gUnknown_8471DEC
thumb_func_end stdpal_get
.align 2, 0 @ Don't pad with nop.

View File

@ -4495,7 +4495,7 @@ _0812A642:
adds r0, r5, 0
movs r1, 0xA
movs r2, 0x2
bl sub_81501D0
bl DrawTextBorderInner
ldrb r3, [r4, 0x5]
adds r3, 0x8
lsls r3, 24

View File

@ -18,6 +18,7 @@ extern u8 gUnknown_3005E88;
extern u16 gUnknown_3005E8C;
extern struct UnkStruct_3005E90 gUnknown_3005E90;
extern struct UnkStruct_203AE98 * gUnknown_3005E94;
extern const u16 gUnknown_84566A8[];
void sub_8112720(u8);
void sub_8113550(u16, const u16 *);

View File

@ -7,6 +7,7 @@ struct TextWindowGraphics
const void * palette;
};
extern const u16 gUnknown_8470B0C[];
extern const u16 gUnknown_8471A4C[];
extern const u16 gUnknown_8471B6C[];
extern const u16 gUnknown_8471DEC[][16];

View File

@ -7,7 +7,7 @@
enum
{
WINDOW_PRIORITY,
WINDOW_BG,
WINDOW_TILEMAP_LEFT,
WINDOW_TILEMAP_TOP,
WINDOW_WIDTH,
@ -19,7 +19,7 @@ enum
struct WindowTemplate
{
u8 priority;
u8 bg;
u8 tilemapLeft;
u8 tilemapTop;
u8 width;

View File

@ -253,7 +253,7 @@ SECTIONS {
asm/berry_crush_3.o(.text);
src/wireless_communication_status_screen.o(.text);
src/braille_text.o(.text);
asm/text_window.o(.text);
src/text_window.o(.text);
src/quest_log_8150454.o(.text);
asm/dodrio_berry_picking.o(.text);
asm/battle_controller_pokedude.o(.text);

View File

@ -21,7 +21,7 @@ const struct TextColor gUnknown_84530B8[] = {
};
const struct WindowTemplate gUnknown_84530C4[] = {
{
.priority = 0,
.bg = 0,
.tilemapLeft = 0x0b,
.tilemapTop = 0x01,
.width = 0x12,
@ -29,7 +29,7 @@ const struct WindowTemplate gUnknown_84530C4[] = {
.paletteNum = 0x0f,
.baseBlock = 0x008a
}, {
.priority = 0,
.bg = 0,
.tilemapLeft = 0x05,
.tilemapTop = 0x0e,
.width = 0x19,
@ -37,7 +37,7 @@ const struct WindowTemplate gUnknown_84530C4[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0162
}, {
.priority = 0,
.bg = 0,
.tilemapLeft = 0x01,
.tilemapTop = 0x01,
.width = 0x09,
@ -48,7 +48,7 @@ const struct WindowTemplate gUnknown_84530C4[] = {
};
const struct WindowTemplate gUnknown_84530E4[] = {
{
.priority = 0,
.bg = 0,
.tilemapLeft = 0x0b,
.tilemapTop = 0x01,
.width = 0x12,
@ -56,7 +56,7 @@ const struct WindowTemplate gUnknown_84530E4[] = {
.paletteNum = 0x0f,
.baseBlock = 0x008a
}, {
.priority = 0,
.bg = 0,
.tilemapLeft = 0x05,
.tilemapTop = 0x0e,
.width = 0x19,
@ -64,7 +64,7 @@ const struct WindowTemplate gUnknown_84530E4[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0162
}, {
.priority = 0,
.bg = 0,
.tilemapLeft = 0x01,
.tilemapTop = 0x01,
.width = 0x08,
@ -75,7 +75,7 @@ const struct WindowTemplate gUnknown_84530E4[] = {
};
const struct WindowTemplate gUnknown_8453104[] = {
{
.priority = 0,
.bg = 0,
.tilemapLeft = 24,
.tilemapTop = 15,
.width = 5,
@ -83,7 +83,7 @@ const struct WindowTemplate gUnknown_8453104[] = {
.paletteNum = 0xF,
.baseBlock = 0x242
}, {
.priority = 0,
.bg = 0,
.tilemapLeft = 17,
.tilemapTop = 9,
.width = 12,
@ -91,7 +91,7 @@ const struct WindowTemplate gUnknown_8453104[] = {
.paletteNum = 0xF,
.baseBlock = 0x242
}, {
.priority = 0,
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 8,
@ -102,7 +102,7 @@ const struct WindowTemplate gUnknown_8453104[] = {
};
const struct WindowTemplate gUnknown_845311C = {
.priority = 0,
.bg = 0,
.tilemapLeft = 23,
.tilemapTop = 15,
.width = 6,
@ -112,7 +112,7 @@ const struct WindowTemplate gUnknown_845311C = {
};
const struct WindowTemplate gUnknown_8453124 = {
.priority = 0,
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 6,
@ -123,7 +123,7 @@ const struct WindowTemplate gUnknown_8453124 = {
const struct WindowTemplate gUnknown_845312C[] = {
{
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x02,
.tilemapTop = 0x0f,
.width = 0x1a,
@ -131,7 +131,7 @@ const struct WindowTemplate gUnknown_845312C[] = {
.paletteNum = 0x0f,
.baseBlock = 0x02a2
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x0f,
.width = 0x0e,
@ -139,7 +139,7 @@ const struct WindowTemplate gUnknown_845312C[] = {
.paletteNum = 0x0c,
.baseBlock = 0x02a2
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x0f,
.width = 0x0f,
@ -147,7 +147,7 @@ const struct WindowTemplate gUnknown_845312C[] = {
.paletteNum = 0x0c,
.baseBlock = 0x02da
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x0f,
.width = 0x10,
@ -155,7 +155,7 @@ const struct WindowTemplate gUnknown_845312C[] = {
.paletteNum = 0x0c,
.baseBlock = 0x0316
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x0f,
.width = 0x17,
@ -163,7 +163,7 @@ const struct WindowTemplate gUnknown_845312C[] = {
.paletteNum = 0x0c,
.baseBlock = 0x0356
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x16,
.tilemapTop = 0x11,
.width = 0x07,
@ -171,7 +171,7 @@ const struct WindowTemplate gUnknown_845312C[] = {
.paletteNum = 0x0f,
.baseBlock = 0x020a
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x16,
.tilemapTop = 0x0f,
.width = 0x07,
@ -179,7 +179,7 @@ const struct WindowTemplate gUnknown_845312C[] = {
.paletteNum = 0x0f,
.baseBlock = 0x020a
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x16,
.tilemapTop = 0x0d,
.width = 0x07,
@ -187,7 +187,7 @@ const struct WindowTemplate gUnknown_845312C[] = {
.paletteNum = 0x0f,
.baseBlock = 0x020a
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x16,
.tilemapTop = 0x0b,
.width = 0x07,

View File

@ -114,7 +114,7 @@ EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0};
static const struct WindowTemplate sDaycareLevelMenuWindowTemplate =
{
.priority = 0,
.bg = 0,
.tilemapLeft = 12,
.tilemapTop = 1,
.width = 17,
@ -333,7 +333,7 @@ static const struct BgTemplate sBgTemplates_EggHatch[2] =
static const struct WindowTemplate sWinTemplates_EggHatch[2] =
{
{
.priority = 0,
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 26,
@ -346,7 +346,7 @@ static const struct WindowTemplate sWinTemplates_EggHatch[2] =
static const struct WindowTemplate sYesNoWinTemplate =
{
.priority = 0,
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 6,

View File

@ -38,886 +38,6 @@
#include "help_system.h"
#include "field_fadetransition.h"
#include "new_menu_helpers.h"
/*
struct EggHatchData
{
u8 eggSpriteID;
u8 pokeSpriteID;
u8 CB2_state;
u8 CB2_PalCounter;
u8 eggPartyID;
u8 unused_5;
u8 unused_6;
u8 eggShardVelocityID;
u8 windowId;
u8 unused_9;
u8 unused_A;
u16 species;
struct TextColor textColor;
};
extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NickHatchPrompt[];
static void Task_EggHatch(u8 taskID);
static void CB2_EggHatch_0(void);
static void CB2_EggHatch_1(void);
static void SpriteCB_Egg_0(struct Sprite* sprite);
static void SpriteCB_Egg_1(struct Sprite* sprite);
static void SpriteCB_Egg_2(struct Sprite* sprite);
static void SpriteCB_Egg_3(struct Sprite* sprite);
static void SpriteCB_Egg_4(struct Sprite* sprite);
static void SpriteCB_Egg_5(struct Sprite* sprite);
static void SpriteCB_EggShard(struct Sprite* sprite);
static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed);
static void CreateRandomEggShardSprite(void);
static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex);
// IWRAM bss
static IWRAM_DATA struct EggHatchData *sEggHatchData;
// rom data
static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/palettes/egg_palette.gbapal");
static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp");
static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
static const struct OamData sOamData_EggHatch =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
.affineParam = 0,
};
static const union AnimCmd sSpriteAnim_EggHatch0[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_EggHatch1[] =
{
ANIMCMD_FRAME(16, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_EggHatch2[] =
{
ANIMCMD_FRAME(32, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_EggHatch3[] =
{
ANIMCMD_FRAME(48, 5),
ANIMCMD_END
};
static const union AnimCmd *const sSpriteAnimTable_EggHatch[] =
{
sSpriteAnim_EggHatch0,
sSpriteAnim_EggHatch1,
sSpriteAnim_EggHatch2,
sSpriteAnim_EggHatch3,
};
static const struct SpriteSheet sEggHatch_Sheet =
{
.data = sEggHatchTiles,
.size = 2048,
.tag = 12345,
};
static const struct SpriteSheet sEggShards_Sheet =
{
.data = sEggShardTiles,
.size = 128,
.tag = 23456,
};
static const struct SpritePalette sEgg_SpritePalette =
{
.data = sEggPalette,
.tag = 54321
};
static const struct SpriteTemplate sSpriteTemplate_EggHatch =
{
.tileTag = 12345,
.paletteTag = 54321,
.oam = &sOamData_EggHatch,
.anims = sSpriteAnimTable_EggHatch,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
static const struct OamData sOamData_EggShard =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
.affineParam = 0,
};
static const union AnimCmd sSpriteAnim_EggShard0[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_EggShard1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_EggShard2[] =
{
ANIMCMD_FRAME(2, 5),
ANIMCMD_END
};
static const union AnimCmd sSpriteAnim_EggShard3[] =
{
ANIMCMD_FRAME(3, 5),
ANIMCMD_END
};
static const union AnimCmd *const sSpriteAnimTable_EggShard[] =
{
sSpriteAnim_EggShard0,
sSpriteAnim_EggShard1,
sSpriteAnim_EggShard2,
sSpriteAnim_EggShard3,
};
static const struct SpriteTemplate sSpriteTemplate_EggShard =
{
.tileTag = 23456,
.paletteTag = 54321,
.oam = &sOamData_EggShard,
.anims = sSpriteAnimTable_EggShard,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_EggShard
};
static const struct BgTemplate sBgTemplates_EggHatch[2] =
{
{
.bg = 0,
.charBaseIndex = 2,
.mapBaseIndex = 24,
.screenSize = 3,
.paletteMode = 0,
.priority = 0,
.baseTile = 0
},
{
.bg = 1,
.charBaseIndex = 0,
.mapBaseIndex = 8,
.screenSize = 1,
.paletteMode = 0,
.priority = 2,
.baseTile = 0
},
};
static const struct WindowTemplate sWinTemplates_EggHatch[2] =
{
{
.priority = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 26,
.height = 4,
.paletteNum = 0,
.baseBlock = 64
},
DUMMY_WIN_TEMPLATE
};
static const struct WindowTemplate sYesNoWinTemplate =
{
.priority = 0,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 5,
.height = 4,
.paletteNum = 15,
.baseBlock = 424
};
static const s16 sEggShardVelocities[][2] =
{
{Q_8_8(-1.5), Q_8_8(-3.75)},
{Q_8_8(-5), Q_8_8(-3)},
{Q_8_8(3.5), Q_8_8(-3)},
{Q_8_8(-4), Q_8_8(-3.75)},
{Q_8_8(2), Q_8_8(-1.5)},
{Q_8_8(-0.5), Q_8_8(-6.75)},
{Q_8_8(5), Q_8_8(-2.25)},
{Q_8_8(-1.5), Q_8_8(-3.75)},
{Q_8_8(4.5), Q_8_8(-1.5)},
{Q_8_8(-1), Q_8_8(-6.75)},
{Q_8_8(4), Q_8_8(-2.25)},
{Q_8_8(-3.5), Q_8_8(-3.75)},
{Q_8_8(1), Q_8_8(-1.5)},
{Q_8_8(-3.515625), Q_8_8(-6.75)},
{Q_8_8(4.5), Q_8_8(-2.25)},
{Q_8_8(-0.5), Q_8_8(-7.5)},
{Q_8_8(1), Q_8_8(-4.5)},
{Q_8_8(-2.5), Q_8_8(-2.25)},
{Q_8_8(2.5), Q_8_8(-7.5)},
};
// code
static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
{
u16 species;
u32 personality, pokerus;
u8 i, friendship, language, gameMet, markings, obedience;
u16 moves[4];
u32 ivs[NUM_STATS];
species = GetMonData(egg, MON_DATA_SPECIES);
for (i = 0; i < 4; i++)
{
moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i);
}
personality = GetMonData(egg, MON_DATA_PERSONALITY);
for (i = 0; i < NUM_STATS; i++)
{
ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i);
}
// language = GetMonData(egg, MON_DATA_LANGUAGE);
gameMet = GetMonData(egg, MON_DATA_MET_GAME);
markings = GetMonData(egg, MON_DATA_MARKINGS);
pokerus = GetMonData(egg, MON_DATA_POKERUS);
obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0);
for (i = 0; i < 4; i++)
{
SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]);
}
for (i = 0; i < NUM_STATS; i++)
{
SetMonData(temp, MON_DATA_HP_IV + i, &ivs[i]);
}
language = GAME_LANGUAGE;
SetMonData(temp, MON_DATA_LANGUAGE, &language);
SetMonData(temp, MON_DATA_MET_GAME, &gameMet);
SetMonData(temp, MON_DATA_MARKINGS, &markings);
friendship = 120;
SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship);
SetMonData(temp, MON_DATA_POKERUS, &pokerus);
SetMonData(temp, MON_DATA_OBEDIENCE, &obedience);
*egg = *temp;
}
static void AddHatchedMonToParty(u8 id)
{
u8 isEgg = 0x46; // ?
u16 pokeNum;
u8 name[12];
u16 ball;
u16 caughtLvl;
u8 mapNameID;
struct Pokemon* mon = &gPlayerParty[id];
CreatedHatchedMon(mon, &gEnemyParty[0]);
SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
pokeNum = GetMonData(mon, MON_DATA_SPECIES);
GetSpeciesName(name, pokeNum);
SetMonData(mon, MON_DATA_NICKNAME, name);
pokeNum = SpeciesToNationalPokedexNum(pokeNum);
GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN);
GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT);
GetMonNick(mon, gStringVar1);
ball = ITEM_POKE_BALL;
SetMonData(mon, MON_DATA_POKEBALL, &ball);
caughtLvl = 0;
SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl);
mapNameID = GetCurrentRegionMapSectionId();
SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID);
MonRestorePP(mon);
CalculateMonStats(mon);
}
void ScriptHatchMon(void)
{
AddHatchedMonToParty(gSpecialVar_0x8004);
}
static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId)
{
u8 nick[0x20];
struct DaycareMon *daycareMon = &daycare->mons[daycareId];
GetBoxMonNick(&daycareMon->mon, nick);
if (daycareMon->mail.message.itemId != 0
&& (StringCompare(nick, daycareMon->mail.monName) != 0
|| StringCompare(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0))
{
StringCopy(gStringVar1, nick);
StringCopy(gStringVar2, daycareMon->mail.OT_name);
StringCopy(gStringVar3, daycareMon->mail.monName);
return TRUE;
}
return FALSE;
}
bool8 sub_8046EAC(void)
{
return sub_8046E34(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
}
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc)
{
u8 r4 = 0;
u8 spriteID = 0; // r7
struct Pokemon* mon = NULL; // r5
if (a0 == 0)
{
mon = &gPlayerParty[pokeID];
r4 = 1;
}
if (a0 == 1)
{
mon = &gPlayerParty[pokeID];
r4 = 3;
}
switch (switchID)
{
case 0:
{
u16 species = GetMonData(mon, MON_DATA_SPECIES);
u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
sub_800ECC4(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid);
LoadCompressedObjectPalette(GetMonSpritePalStruct(mon));
*speciesLoc = species;
}
break;
case 1:
SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, r4);
spriteID = CreateSprite(&gMultiuseSpriteTemplate, 120, 70, 6);
gSprites[spriteID].invisible = TRUE;
gSprites[spriteID].callback = SpriteCallbackDummy;
break;
}
return spriteID;
}
static void VBlankCB_EggHatch(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
void EggHatch(void)
{
ScriptContext2_Enable();
CreateTask(Task_EggHatch, 10);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
sub_812B478();
}
static void Task_EggHatch(u8 taskID)
{
if (!gPaletteFade.active)
{
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_EggHatch_0);
gFieldCallback = FieldCallback_ReturnToEventScript2;
DestroyTask(taskID);
}
}
static void CB2_EggHatch_0(void)
{
switch (gMain.state)
{
case 0:
SetGpuReg(REG_OFFSET_DISPCNT, 0);
sEggHatchData = Alloc(sizeof(struct EggHatchData));
AllocateMonSpritesGfx();
sEggHatchData->eggPartyID = gSpecialVar_0x8004;
sEggHatchData->eggShardVelocityID = 0;
SetVBlankCallback(VBlankCB_EggHatch);
gSpecialVar_0x8005 = GetCurrentMapMusic();
reset_temp_tile_data_buffers();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch));
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
SetBgAttribute(1, 7, 2);
SetBgTilemapBuffer(1, Alloc(0x1000));
SetBgTilemapBuffer(0, Alloc(0x2000));
DeactivateAllTextPrinters();
ResetPaletteFade();
FreeAllSpritePalettes();
ResetSpriteData();
ResetTasks();
ScanlineEffect_Stop();
m4aSoundVSyncOn();
gMain.state++;
break;
case 1:
InitWindows(sWinTemplates_EggHatch);
sEggHatchData->windowId = 0;
gMain.state++;
break;
case 2:
DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0);
CopyToBgTilemapBuffer(0, gFile_graphics_interface_menu_map_tilemap, 0, 0);
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20);
gMain.state++;
break;
case 3:
LoadSpriteSheet(&sEggHatch_Sheet);
LoadSpriteSheet(&sEggShards_Sheet);
LoadSpritePalette(&sEgg_SpritePalette);
gMain.state++;
break;
case 4:
CopyBgTilemapBufferToVram(0);
AddHatchedMonToParty(sEggHatchData->eggPartyID);
gMain.state++;
break;
case 5:
EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID, &sEggHatchData->species);
gMain.state++;
break;
case 6:
sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID, &sEggHatchData->species);
gMain.state++;
break;
case 7:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
LoadPalette(gTradeGba2_Pal, 0x10, 0xA0);
LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0);
CopyToBgTilemapBuffer(1, gUnknown_08331F60, 0x1000, 0);
CopyBgTilemapBufferToVram(1);
gMain.state++;
break;
case 8:
SetMainCallback2(CB2_EggHatch_1);
sEggHatchData->CB2_state = 0;
break;
}
RunTasks();
RunTextPrinters();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
static void EggHatchSetMonNickname(void)
{
SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
FreeMonSpritesGfx();
Free(sEggHatchData);
sub_812B484();
SetMainCallback2(CB2_ReturnToField);
}
static void Task_EggHatchPlayBGM(u8 taskID)
{
if (gTasks[taskID].data[0] == 0)
{
StopMapMusic();
}
if (gTasks[taskID].data[0] == 1)
PlayBGM(MUS_ME_SHINKA);
if (gTasks[taskID].data[0] > 60)
{
PlayBGM(MUS_SHINKA);
DestroyTask(taskID);
// UB: task is destroyed, yet the value is incremented
}
gTasks[taskID].data[0]++;
}
static void CB2_EggHatch_1(void)
{
u16 species;
u8 gender;
u32 personality;
switch (sEggHatchData->CB2_state)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_EggHatch, 120, 75, 5);
ShowBg(0);
ShowBg(1);
sEggHatchData->CB2_state++;
CreateTask(Task_EggHatchPlayBGM, 5);
break;
case 1:
if (!gPaletteFade.active)
{
FillWindowPixelBuffer(sEggHatchData->windowId, 0x00);
sEggHatchData->CB2_PalCounter = 0;
sEggHatchData->CB2_state++;
}
break;
case 2:
if (++sEggHatchData->CB2_PalCounter > 30)
{
sEggHatchData->CB2_state++;
gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0;
}
break;
case 3:
if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy)
{
PlayCry1(sEggHatchData->species, 0);
sEggHatchData->CB2_state++;
}
break;
case 4:
if (IsCryFinished())
{
sEggHatchData->CB2_state++;
}
break;
case 5:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg);
EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF);
PlayFanfare(MUS_FANFA5);
sEggHatchData->CB2_state++;
PutWindowTilemap(sEggHatchData->windowId);
CopyWindowToVram(sEggHatchData->windowId, 3);
break;
case 6:
if (IsFanfareTaskInactive())
sEggHatchData->CB2_state++;
break;
case 7:
if (IsFanfareTaskInactive())
sEggHatchData->CB2_state++;
break;
case 8:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt);
EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1);
sEggHatchData->CB2_state++;
break;
case 9:
if (!IsTextPrinterActive(sEggHatchData->windowId))
{
LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0);
CreateYesNoMenu(&sYesNoWinTemplate, 3, 0, 2, 0x140, 0xE, 0);
sEggHatchData->CB2_state++;
}
break;
case 10:
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
break;
case 1:
case -1:
sEggHatchData->CB2_state++;
}
break;
case 11:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
sEggHatchData->CB2_state++;
break;
case 12:
if (!gPaletteFade.active)
{
RemoveWindow(sEggHatchData->windowId);
UnsetBgTilemapBuffer(0);
UnsetBgTilemapBuffer(1);
Free(sEggHatchData);
SetMainCallback2(CB2_ReturnToField);
sub_812B484();
}
break;
}
RunTasks();
RunTextPrinters();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
static void SpriteCB_Egg_0(struct Sprite* sprite)
{
if (++sprite->data[0] > 20)
{
sprite->callback = SpriteCB_Egg_1;
sprite->data[0] = 0;
}
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
sprite->pos2.x = Sin(sprite->data[1], 1);
if (sprite->data[0] == 15)
{
PlaySE(SE_BOWA);
StartSpriteAnim(sprite, 1);
CreateRandomEggShardSprite();
}
}
}
static void SpriteCB_Egg_1(struct Sprite* sprite)
{
if (++sprite->data[2] > 30)
{
if (++sprite->data[0] > 20)
{
sprite->callback = SpriteCB_Egg_2;
sprite->data[0] = 0;
sprite->data[2] = 0;
}
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
sprite->pos2.x = Sin(sprite->data[1], 2);
if (sprite->data[0] == 15)
{
PlaySE(SE_BOWA);
StartSpriteAnim(sprite, 2);
}
}
}
}
struct UnkStruct_82349CC
{
u8 field_0;
u8 field_1;
u8 field_2;
u8 field_3;
};
extern const struct UnkStruct_82349CC gUnknown_82349CC[NUM_SPECIES];
static void SpriteCB_Egg_2(struct Sprite* sprite)
{
if (++sprite->data[2] > 30)
{
if (++sprite->data[0] > 38)
{
u16 species;
sprite->callback = SpriteCB_Egg_3;
sprite->data[0] = 0;
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0;
gSprites[sEggHatchData->pokeSpriteID].pos2.y = gUnknown_82349CC[species].field_1;
}
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
sprite->pos2.x = Sin(sprite->data[1], 2);
if (sprite->data[0] == 15)
{
PlaySE(SE_BOWA);
StartSpriteAnim(sprite, 2);
CreateRandomEggShardSprite();
CreateRandomEggShardSprite();
}
if (sprite->data[0] == 30)
PlaySE(SE_BOWA);
}
}
}
static void SpriteCB_Egg_3(struct Sprite* sprite)
{
if (++sprite->data[0] > 50)
{
sprite->callback = SpriteCB_Egg_4;
sprite->data[0] = 0;
}
}
static void SpriteCB_Egg_4(struct Sprite* sprite)
{
s16 i;
if (sprite->data[0] == 0)
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0xFFFF);
if (sprite->data[0] < 4u)
{
for (i = 0; i <= 3; i++)
CreateRandomEggShardSprite();
}
sprite->data[0]++;
if (!gPaletteFade.active)
{
PlaySE(SE_JIHANKI);
sprite->invisible = TRUE;
sprite->callback = SpriteCB_Egg_5;
sprite->data[0] = 0;
}
}
static void SpriteCB_Egg_5(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
{
gSprites[sEggHatchData->pokeSpriteID].invisible = FALSE;
StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1);
}
if (sprite->data[0] == 8)
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, 0xFFFF);
if (sprite->data[0] <= 9)
gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1;
if (sprite->data[0] > 40)
sprite->callback = SpriteCallbackDummy;
sprite->data[0]++;
}
static void SpriteCB_EggShard(struct Sprite* sprite)
{
sprite->data[4] += sprite->data[1];
sprite->data[5] += sprite->data[2];
sprite->pos2.x = sprite->data[4] / 256;
sprite->pos2.y = sprite->data[5] / 256;
sprite->data[2] += sprite->data[3];
if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0)
DestroySprite(sprite);
}
static void CreateRandomEggShardSprite(void)
{
u16 spriteAnimIndex;
s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0];
s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1];
sEggHatchData->eggShardVelocityID++;
spriteAnimIndex = Random() % 4;
CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex);
}
static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex)
{
u8 spriteID = CreateSprite(&sSpriteTemplate_EggShard, x, y, 4);
gSprites[spriteID].data[1] = data1;
gSprites[spriteID].data[2] = data2;
gSprites[spriteID].data[3] = data3;
StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex);
}
static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed)
{
FillWindowPixelBuffer(windowId, 0xFF);
sEggHatchData->textColor.fgColor = 0;
sEggHatchData->textColor.bgColor = 5;
sEggHatchData->textColor.shadowColor = 6;
AddTextPrinterParametrized2(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string);
}
*/
#include "global.h"
#include "pokemon.h"
#include "egg_hatch.h"
#include "pokedex.h"
#include "constants/items.h"
#include "script.h"
#include "decompress.h"
#include "task.h"
#include "palette.h"
#include "main.h"
#include "event_data.h"
#include "sound.h"
#include "constants/songs.h"
#include "text.h"
#include "text_window.h"
#include "string_util.h"
#include "menu.h"
#include "trig.h"
#include "random.h"
#include "malloc.h"
#include "dma3.h"
#include "gpu_regs.h"
#include "bg.h"
#include "m4a.h"
#include "window.h"
#include "graphics.h"
#include "constants/abilities.h"
#include "constants/species.h"
#include "daycare.h"
#include "overworld.h"
#include "scanline_effect.h"
#include "field_weather.h"
#include "international_string_util.h"
#include "naming_screen.h"
#include "pokemon_storage_system.h"
#include "field_screen_effect.h"
#include "battle.h" // to get rid of later
#include "help_system.h"
#include "field_fadetransition.h"
#include "new_menu_helpers.h"
struct EggHatchData
{
@ -1128,7 +248,7 @@ static const struct BgTemplate sBgTemplates_EggHatch[2] =
static const struct WindowTemplate sWinTemplates_EggHatch[2] =
{
{
.priority = 0,
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 26,
@ -1141,7 +261,7 @@ static const struct WindowTemplate sWinTemplates_EggHatch[2] =
static const struct WindowTemplate sYesNoWinTemplate =
{
.priority = 0,
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 5,

View File

@ -153,7 +153,7 @@ const struct BgTemplate sBGTemplates[] = {
const struct WindowTemplate sMainWindows[] = {
{
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x00,
.tilemapTop = 0x00,
.width = 0x1e,
@ -161,7 +161,7 @@ const struct WindowTemplate sMainWindows[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0013
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x01,
.tilemapTop = 0x0f,
.width = 0x1c,
@ -169,7 +169,7 @@ const struct WindowTemplate sMainWindows[] = {
.paletteNum = 0x0f,
.baseBlock = 0x004f
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x00,
.tilemapTop = 0x0f,
.width = 0x1e,
@ -182,7 +182,7 @@ const struct WindowTemplate sMainWindows[] = {
};
const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width28 = {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x01,
.tilemapTop = 0x0f,
.width = 0x1c,
@ -192,7 +192,7 @@ const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width28 = {
};
const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width20 = {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x01,
.tilemapTop = 0x0f,
.width = 0x14,
@ -202,7 +202,7 @@ const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width20 = {
};
const struct WindowTemplate sMysteryGiftMenuWindowTemplate = {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x01,
.tilemapTop = 0x0f,
.width = 0x13,
@ -212,7 +212,7 @@ const struct WindowTemplate sMysteryGiftMenuWindowTemplate = {
};
const struct WindowTemplate sWindowTemplate_ThreeOptions = {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x08,
.tilemapTop = 0x05,
.width = 0x0e,
@ -222,7 +222,7 @@ const struct WindowTemplate sWindowTemplate_ThreeOptions = {
};
const struct WindowTemplate sWindowTemplate_YesNoBox = {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x17,
.tilemapTop = 0x0f,
.width = 0x06,
@ -232,7 +232,7 @@ const struct WindowTemplate sWindowTemplate_YesNoBox = {
};
const struct WindowTemplate sWindowTemplate_7by8 = {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x16,
.tilemapTop = 0x0c,
.width = 0x07,
@ -242,7 +242,7 @@ const struct WindowTemplate sWindowTemplate_7by8 = {
};
const struct WindowTemplate sWindowTemplate_7by6 = {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x16,
.tilemapTop = 0x0e,
.width = 0x07,
@ -252,7 +252,7 @@ const struct WindowTemplate sWindowTemplate_7by6 = {
};
const struct WindowTemplate sWindowTemplate_7by4 = {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x16,
.tilemapTop = 0x0f,
.width = 0x07,

View File

@ -165,7 +165,7 @@ static const struct BgTemplate sBgTemplates[3] = {
static const struct WindowTemplate sHelpDocsWindowTemplates1[] = {
{
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x00,
.tilemapTop = 0x07,
.width = 0x1e,
@ -177,7 +177,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates1[] = {
static const struct WindowTemplate sHelpDocsWindowTemplates2[] = {
{
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x03,
.width = 0x18,
@ -185,7 +185,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates2[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0001
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x0a,
.width = 0x18,
@ -193,7 +193,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates2[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0092
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x0f,
.width = 0x18,
@ -205,7 +205,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates2[] = {
static const struct WindowTemplate sHelpDocsWindowTemplates3[] = {
{
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x03,
.width = 0x18,
@ -213,7 +213,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates3[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0001
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x08,
.width = 0x18,
@ -221,7 +221,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates3[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0062
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x06,
.tilemapTop = 0x0d,
.width = 0x18,
@ -239,7 +239,7 @@ static const struct WindowTemplate *const sHelpDocsWindowTemplatePtrs[3] = {
static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = {
{
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x01,
.tilemapTop = 0x04,
.width = 0x1c,
@ -247,7 +247,7 @@ static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0001
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x12,
.tilemapTop = 0x09,
.width = 0x09,
@ -255,7 +255,7 @@ static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0174
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x02,
.tilemapTop = 0x02,
.width = 0x06,
@ -263,7 +263,7 @@ static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0180
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x02,
.tilemapTop = 0x02,
.width = 0x0c,

View File

@ -2291,7 +2291,7 @@ void sub_8112E3C(u8 a0, struct UnkStruct_300201C * a1, u16 a2)
}
}
const u16 gUnknown_84566A8[][16] = INCBIN_U16("data/graphics/unknown_84566a8.bin");
const u16 gUnknown_84566A8[] = INCBIN_U16("data/graphics/unknown_84566a8.bin");
const struct WindowTemplate gUnknown_8456928 = {
0x00, 0, 15, 30, 5, 15, 0x008F
@ -2349,7 +2349,7 @@ void sub_8112F18(u8 a0)
else
k = 5;
CpuCopy32(
gUnknown_84566A8[k], // operand swap on "add" instruction
(void *)gUnknown_84566A8 + 32 * k, // operand swap on "add" instruction
buffer + 32 * (i * width + j),
32
);

169
src/text_window.c Normal file
View File

@ -0,0 +1,169 @@
#include "global.h"
#include "bg.h"
#include "palette.h"
#include "text.h"
#include "window.h"
#include "text_window.h"
#include "text_window_graphics.h"
#include "quest_log.h"
extern const u16 gUnknown_841F1C8[];
void sub_814FFC4(u8 windowId, u8 frameType, u16 destOffset, u8 palIdx);
void sub_814FD04(u8 bgId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(bgId, gUnknown_84566A8, 0x280, destOffset);
LoadPalette(stdpal_get(2), palIdx, 32);
}
void sub_814FD38(u8 bgId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(bgId, gUnknown_841F1C8, 0x280, destOffset);
LoadPalette(stdpal_get(0), palIdx, 32);
}
void sub_814FD6C(u8 bgId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(bgId, gUnknown_8470B0C, 0x260, destOffset);
LoadPalette(stdpal_get(1), palIdx, 32);
}
void sub_814FDA0(u8 bgId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(bgId, gUnknown_8471A4C, 0x120, destOffset);
LoadPalette(stdpal_get(3), palIdx, 32);
}
void sub_814FDD4(u8 bgId, u16 destOffset)
{
LoadBgTiles(bgId, gUnknown_8471B6C, 0x280, destOffset);
}
void sub_814FDF4(u8 bgId, u8 frameType, u16 destOffset, u8 palIdx)
{
LoadBgTiles(bgId, gUnknown_8471E8C[frameType].tiles, 0x120, destOffset);
LoadPalette(gUnknown_8471E8C[frameType].palette, palIdx, 32);
}
void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palIdx)
{
sub_814FFC4(windowId, gSaveBlock2Ptr->optionsWindowFrameType, destOffset, palIdx);
}
void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_84566A8, 0x280, destOffset);
LoadPalette(stdpal_get(2), palIdx, 32);
}
void sub_814FEAC(u8 windowId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_841F1C8, 0x280, destOffset);
LoadPalette(stdpal_get(0), palIdx, 32);
}
void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8470B0C, 0x260, destOffset);
LoadPalette(stdpal_get(1), palIdx, 32);
}
void sub_814FF2C(u8 windowId, u16 destOffset, u8 palIdx)
{
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471A4C, 0x120, destOffset);
LoadPalette(stdpal_get(3), palIdx, 32);
}
void sub_814FF6C(u8 windowId, u16 destOffset)
{
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471A4C, 0x120, destOffset);
}
void sub_814FF98(u8 windowId, u16 destOffset)
{
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471B6C, 0x280, destOffset);
}
void sub_814FFC4(u8 windowId, u8 frameType, u16 destOffset, u8 palIdx)
{
LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471E8C[frameType].tiles, 0x120, destOffset);
LoadPalette(gUnknown_8471E8C[frameType].palette, palIdx, 32);
}
void sub_815001C(u8 windowId, u16 destOffset, u8 palIdx)
{
sub_814FFC4(windowId, gSaveBlock2Ptr->optionsWindowFrameType, destOffset, palIdx);
}
void DrawTextBorderOuter(u8 windowId, u16 tileNum, u8 palNum)
{
u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG);
u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT);
u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP);
u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH);
u16 height = GetWindowAttribute(windowId, WINDOW_HEIGHT);
FillBgTilemapBufferRect(bgLayer, tileNum + 0, tilemapLeft - 1, tilemapTop - 1, 1, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 1, tilemapLeft, tilemapTop - 1, width, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 2, tilemapLeft + width, tilemapTop - 1, 1, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 3, tilemapLeft - 1, tilemapTop, 1, height, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 5, tilemapLeft + width, tilemapTop, 1, height, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 6, tilemapLeft - 1, tilemapTop + height, 1, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 7, tilemapLeft, tilemapTop + height, width, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 8, tilemapLeft + width, tilemapTop + height, 1, 1, palNum);
}
void DrawTextBorderInner(u8 windowId, u16 tileNum, u8 palNum)
{
u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG);
u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT);
u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP);
u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH);
u16 height = GetWindowAttribute(windowId, WINDOW_HEIGHT);
FillBgTilemapBufferRect(bgLayer, tileNum + 0, tilemapLeft, tilemapTop, 1, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 1, tilemapLeft + 1, tilemapTop, width - 2, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 2, tilemapLeft + width - 1, tilemapTop, 1, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 3, tilemapLeft, tilemapTop + 1, 1, height - 2, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 5, tilemapLeft + width - 1, tilemapTop + 1, 1, height - 2, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 6, tilemapLeft, tilemapTop + height - 1, 1, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 7, tilemapLeft + 1, tilemapTop + height - 1, width - 2, 1, palNum);
FillBgTilemapBufferRect(bgLayer, tileNum + 8, tilemapLeft + width - 1, tilemapTop + height - 1, 1, 1, palNum);
}
void rbox_fill_rectangle(u8 windowId)
{
u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG);
u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT);
u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP);
u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH);
u16 height = GetWindowAttribute(windowId, WINDOW_HEIGHT);
FillBgTilemapBufferRect(bgLayer, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0x11);
}
const u16 *stdpal_get(u8 id)
{
switch (id)
{
case 0:
id = 0;
break;
case 1:
id = 0x10;
break;
case 2:
id = 0x20;
break;
case 3:
id = 0x30;
break;
case 4:
default:
id = 0x40;
break;
}
return (const u16 *)(gUnknown_8471DEC) + id;
}

View File

@ -43,7 +43,7 @@ bool16 InitWindows(const struct WindowTemplate *templates)
gWindows[i].tileData = NULL;
}
for (i = 0, allocatedBaseBlock = 0, bgLayer = templates[i].priority; bgLayer != 0xFF && i < 0x20; ++i, bgLayer = templates[i].priority)
for (i = 0, allocatedBaseBlock = 0, bgLayer = templates[i].bg; bgLayer != 0xFF && i < 0x20; ++i, bgLayer = templates[i].bg)
{
if (gWindowTileAutoAllocEnabled == TRUE)
{
@ -112,14 +112,14 @@ u16 AddWindow(const struct WindowTemplate *template)
for (win = 0; win < 0x20; ++win)
{
if ((bgLayer = gWindows[win].window.priority) == 0xFF)
if ((bgLayer = gWindows[win].window.bg) == 0xFF)
break;
}
if (win == 0x20)
return 0xFF;
bgLayer = template->priority;
bgLayer = template->bg;
allocatedBaseBlock = 0;
if (gWindowTileAutoAllocEnabled == TRUE)
@ -175,7 +175,7 @@ u16 AddWindow(const struct WindowTemplate *template)
void RemoveWindow(u8 windowId)
{
u8 bgLayer = gWindows[windowId].window.priority;
u8 bgLayer = gWindows[windowId].window.bg;
if (gWindowTileAutoAllocEnabled == TRUE)
{
@ -231,14 +231,14 @@ void CopyWindowToVram(u8 windowId, u8 mode)
switch (mode)
{
case 1:
CopyBgTilemapBufferToVram(windowLocal.window.priority);
CopyBgTilemapBufferToVram(windowLocal.window.bg);
break;
case 2:
LoadBgTiles(windowLocal.window.priority, windowLocal.tileData, windowSize, windowLocal.window.baseBlock);
LoadBgTiles(windowLocal.window.bg, windowLocal.tileData, windowSize, windowLocal.window.baseBlock);
break;
case 3:
LoadBgTiles(windowLocal.window.priority, windowLocal.tileData, windowSize, windowLocal.window.baseBlock);
CopyBgTilemapBufferToVram(windowLocal.window.priority);
LoadBgTiles(windowLocal.window.bg, windowLocal.tileData, windowSize, windowLocal.window.baseBlock);
CopyBgTilemapBufferToVram(windowLocal.window.bg);
break;
}
}
@ -248,8 +248,8 @@ void PutWindowTilemap(u8 windowId)
struct Window windowLocal = gWindows[windowId];
WriteSequenceToBgTilemapBuffer(
windowLocal.window.priority,
GetBgAttribute(windowLocal.window.priority, 0xA) + windowLocal.window.baseBlock,
windowLocal.window.bg,
GetBgAttribute(windowLocal.window.bg, 0xA) + windowLocal.window.baseBlock,
windowLocal.window.tilemapLeft,
windowLocal.window.tilemapTop,
windowLocal.window.width,
@ -261,13 +261,13 @@ void PutWindowTilemap(u8 windowId)
void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette)
{
struct Window windowLocal = gWindows[windowId];
u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.priority, 0xA);
u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, 0xA);
int i;
for (i = 0; i < height; ++i)
{
WriteSequenceToBgTilemapBuffer(
windowLocal.window.priority,
windowLocal.window.bg,
currentRow,
windowLocal.window.tilemapLeft + x,
windowLocal.window.tilemapTop + y + i,
@ -285,7 +285,7 @@ void ClearWindowTilemap(u8 windowId)
struct Window windowLocal = gWindows[windowId];
FillBgTilemapBufferRect(
windowLocal.window.priority,
windowLocal.window.bg,
gWindowClearTile,
windowLocal.window.tilemapLeft,
windowLocal.window.tilemapTop,
@ -297,13 +297,13 @@ void ClearWindowTilemap(u8 windowId)
void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height)
{
struct Window windowLocal = gWindows[windowId];
u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.priority, 0xA);
u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, 0xA);
int i;
for (i = 0; i < height; ++i)
{
WriteSequenceToBgTilemapBuffer(
windowLocal.window.priority,
windowLocal.window.bg,
currentRow,
windowLocal.window.tilemapLeft + x,
windowLocal.window.tilemapTop + y + i,
@ -1072,7 +1072,7 @@ _08004046:\n\
void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8))
{
struct WindowTemplate window = gWindows[windowId].window;
func(window.priority, window.tilemapLeft, window.tilemapTop, window.width, window.height, window.paletteNum);
func(window.bg, window.tilemapLeft, window.tilemapTop, window.width, window.height, window.paletteNum);
}
bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value)
@ -1092,7 +1092,7 @@ bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value)
gWindows[windowId].window.baseBlock = value;
return FALSE;
case WINDOW_TILE_DATA:
case WINDOW_PRIORITY:
case WINDOW_BG:
case WINDOW_WIDTH:
case WINDOW_HEIGHT:
default:
@ -1104,8 +1104,8 @@ u32 GetWindowAttribute(u8 windowId, u8 attributeId)
{
switch (attributeId)
{
case WINDOW_PRIORITY:
return gWindows[windowId].window.priority;
case WINDOW_BG:
return gWindows[windowId].window.bg;
case WINDOW_TILEMAP_LEFT:
return gWindows[windowId].window.tilemapLeft;
case WINDOW_TILEMAP_TOP:
@ -1131,7 +1131,7 @@ static u8 GetNumActiveWindowsOnBg(u8 bgId)
s32 i;
for (i = 0; i < WINDOWS_MAX; i++)
{
if (gWindows[i].window.priority == bgId)
if (gWindows[i].window.bg == bgId)
windowsNum++;
}
return windowsNum;

View File

@ -21,12 +21,12 @@ u16 AddWindow8Bit(struct WindowTemplate *template)
for (windowId = 0; windowId < 32; windowId++)
{
if (gWindows[windowId].window.priority == 0xFF)
if (gWindows[windowId].window.bg == 0xFF)
break;
}
if (windowId == WINDOWS_MAX)
return 0xFF;
bgLayer = template->priority;
bgLayer = template->bg;
if (gWindowBgTilemapBuffers[bgLayer] == 0)
{
u16 attribute = GetBgAttribute(bgLayer, 8);
@ -105,14 +105,14 @@ void CopyWindowToVram8Bit(u8 windowId, u8 mode)
switch (mode)
{
case 1:
CopyBgTilemapBufferToVram(sWindowPtr->window.priority);
CopyBgTilemapBufferToVram(sWindowPtr->window.bg);
break;
case 2:
LoadBgTiles(sWindowPtr->window.priority, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock);
LoadBgTiles(sWindowPtr->window.bg, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock);
break;
case 3:
LoadBgTiles(sWindowPtr->window.priority, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock);
CopyBgTilemapBufferToVram(sWindowPtr->window.priority);
LoadBgTiles(sWindowPtr->window.bg, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock);
CopyBgTilemapBufferToVram(sWindowPtr->window.bg);
break;
}
}
@ -123,7 +123,7 @@ static u8 GetNumActiveWindowsOnBg8Bit(u8 bgId)
s32 i;
for (i = 0; i < WINDOWS_MAX; i++)
{
if (gWindows[i].window.priority == bgId)
if (gWindows[i].window.bg == bgId)
windowsNum++;
}
return windowsNum;

View File

@ -90,7 +90,7 @@ const struct BgTemplate gUnknown_846FA74[] = {
const struct WindowTemplate gUnknown_846FA7C[] = {
{
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x03,
.tilemapTop = 0x00,
.width = 0x18,
@ -98,7 +98,7 @@ const struct WindowTemplate gUnknown_846FA7C[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0001
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x03,
.tilemapTop = 0x04,
.width = 0x16,
@ -106,7 +106,7 @@ const struct WindowTemplate gUnknown_846FA7C[] = {
.paletteNum = 0x0f,
.baseBlock = 0x0049
}, {
.priority = 0x00,
.bg = 0x00,
.tilemapLeft = 0x19,
.tilemapTop = 0x04,
.width = 0x02,