shithub: pokecrystal

Download patch

ref: 3f4044cd4628c156e975971ce0655d3d51917b87
parent: 6d47be8d8c02317a963c6ff5266a50a8674d285d
author: PikalaxALT <PikalaxALT@gmail.com>
date: Wed Nov 18 08:01:55 EST 2015

engine/compose_mail.asm; ldpixel

--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -85,8 +85,8 @@
 
 SCREEN_WIDTH EQU 20
 SCREEN_HEIGHT EQU 18
-SCREEN_WIDTH_PX EQU 160
-SCREEN_HEIGHT_PX EQU 144
+SCREEN_WIDTH_PX EQU SCREEN_WIDTH * 8
+SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * 8
 
 BG_MAP_WIDTH  EQU 32
 BG_MAP_HEIGHT EQU 32
--- /dev/null
+++ b/engine/compose_mail.asm
@@ -1,0 +1,498 @@
+ComposeMailMessage: ; 11e75 (mail?)
+	ld hl, wc6d0
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hMapAnims], a
+	ld a, [hInMenu]
+	push af
+	ld a, $1
+	ld [hInMenu], a
+	call .InitBlankMail
+	call DelayFrame
+
+.loop
+	call .DoMailEntry
+	jr nc, .loop
+
+	pop af
+	ld [hInMenu], a
+	pop af
+	ld [hMapAnims], a
+	ret
+
+.InitBlankMail: ; 11e9a (4:5e9a)
+	call ClearBGPalettes
+	call DisableLCD
+	call Function11c51
+	ld de, VTiles0 tile $00
+	ld hl, .MailIcon
+	ld bc, 8 tiles
+	ld a, BANK(.MailIcon)
+	call FarCopyBytes
+	xor a
+	ld hl, wc300
+	ld [hli], a
+	ld [hl], a
+
+	; init mail icon
+	depixel 3, 2
+	ld a, SPRITE_ANIM_INDEX_00
+	call _InitSpriteAnimStruct
+
+	ld hl, $2
+	add hl, bc
+	ld [hl], $0
+	call .InitCharset
+	ld a, $e3
+	ld [rLCDC], a
+	call .initwc6d3
+	ld b, SCGB_08
+	call GetSGBLayout
+	call WaitBGMap
+	call WaitTop
+	ld a, %11100100
+	call DmgToCgbBGPals
+	ld a, %11100100
+	call Functioncf8
+	call Function11be0
+	ld hl, wc6d0
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	ld hl, $10
+	add hl, de
+	ld [hl], $4e
+	ret
+; 11ef4 (4:5ef4)
+
+.MailIcon: ; 11ef4
+INCBIN "gfx/icon/mail2.2bpp"
+; 11f74
+
+.initwc6d3: ; 11f74 (4:5f74)
+	ld a, $21
+	ld [wc6d3], a
+	ret
+; 11f7a (4:5f7a)
+
+.Dummy: ; dummied out
+	db "メールを かいてね@"
+; 11f84
+
+.InitCharset: ; 11f84 (4:5f84)
+	call WaitTop
+	hlcoord 0, 0
+	ld bc, 6 * SCREEN_WIDTH
+	ld a, $60 ; border
+	call ByteFill
+	hlcoord 0, 6
+	ld bc, 12 * SCREEN_WIDTH
+	ld a, " "
+	call ByteFill
+	hlcoord 1, 1
+	lb bc, 4, SCREEN_WIDTH - 2
+	call ClearBox
+	ld de, MailEntry_Uppercase
+
+.PlaceMailCharset: ; 11fa9 (4:5fa9)
+	hlcoord 1, 7
+	ld b, 6
+.next
+	ld c, SCREEN_WIDTH - 1
+.loop_
+	ld a, [de]
+	ld [hli], a
+	inc de
+	dec c
+	jr nz, .loop_
+	push de
+	ld de, SCREEN_WIDTH + 1
+	add hl, de
+	pop de
+	dec b
+	jr nz, .next
+	ret
+
+.DoMailEntry: ; 11fc0 (4:5fc0)
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .exit_mail
+	call .DoJumptable
+	callba Function8cf62
+	call .Update
+	call DelayFrame
+	and a
+	ret
+.exit_mail
+	callab Function8cf53
+	call ClearSprites
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	scf
+	ret
+
+.Update: ; 11feb (4:5feb)
+	xor a
+	ld [hBGMapMode], a
+	hlcoord 1, 1
+	lb bc, 4, 18
+	call ClearBox
+	ld hl, wc6d0
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	hlcoord 2, 2
+	call PlaceString
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+.DoJumptable: ; 12008 (4:6008)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, 0
+	ld hl, .Jumptable
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+.Jumptable: ; 12017 (4:6017)
+	dw .init_blinking_cursor
+	dw .process_joypad
+
+
+.init_blinking_cursor: ; 1201b (4:601b)
+	depixel 9, 2
+	ld a, SPRITE_ANIM_INDEX_09
+	call _InitSpriteAnimStruct
+	ld a, c
+	ld [wc6d5], a
+	ld a, b
+	ld [wc6d6], a
+	ld hl, $1
+	add hl, bc
+	ld a, [hl]
+	ld hl, $e
+	add hl, bc
+	ld [hl], a
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+.process_joypad: ; 1203a (4:603a)
+	ld hl, hJoyPressed ; $ffa7
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, .a
+	ld a, [hl]
+	and B_BUTTON
+	jr nz, .b
+	ld a, [hl]
+	and START
+	jr nz, .start
+	ld a, [hl]
+	and SELECT
+	jr nz, .select
+	ret
+
+.a
+	call Function12185
+	cp $1
+	jr z, .select
+	cp $2
+	jr z, .b
+	cp $3
+	jr z, .finished
+	call Function11c11
+	call Function121ac
+	jr c, .start
+	ld hl, wc6d2
+	ld a, [hl]
+	cp $10
+	ret nz
+	inc [hl]
+	call Function11bd0
+	ld [hl], $f2
+	dec hl
+	ld [hl], $4e
+	ret
+
+.start
+	ld hl, wc6d5
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+	ld hl, $c
+	add hl, bc
+	ld [hl], $9
+	ld hl, $d
+	add hl, bc
+	ld [hl], $5
+	ret
+
+.b
+	call Function11bbc
+	ld hl, wc6d2
+	ld a, [hl]
+	cp $10
+	ret nz
+	dec [hl]
+	call Function11bd0
+	ld [hl], $f2
+	inc hl
+	ld [hl], $4e
+	ret
+
+.finished
+	call Function11bf7
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+.select
+	ld hl, wcf64
+	ld a, [hl]
+	xor $1
+	ld [hl], a
+	jr nz, .switch_to_lowercase
+	ld de, MailEntry_Uppercase
+	call .PlaceMailCharset
+	ret
+.switch_to_lowercase
+	ld de, MailEntry_Lowercase
+	call .PlaceMailCharset
+	ret
+
+Function120c1: ; 120c1 (4:60c1)
+	call Function1210c
+	ld hl, SpriteAnim1Sprite0d - SpriteAnim1
+	add hl, bc
+	ld a, [hl]
+	ld e, a
+	swap e
+	ld hl, SpriteAnim1YOffset - SpriteAnim1
+	add hl, bc
+	ld [hl], e
+	cp $5
+	ld de, Unknown_120f8
+	ld a, $0
+	jr nz, .asm_120df
+	ld de, Unknown_12102
+	ld a, $1
+.asm_120df
+	ld hl, SpriteAnim1Sprite0e - SpriteAnim1
+	add hl, bc
+	add [hl]
+	ld hl, SpriteAnim1Sprite01 - SpriteAnim1
+	add hl, bc
+	ld [hl], a
+	ld hl, SpriteAnim1Sprite0c - SpriteAnim1
+	add hl, bc
+	ld l, [hl]
+	ld h, SpriteAnim1Index - SpriteAnim1
+	add hl, de
+	ld a, [hl]
+	ld hl, SpriteAnim1XOffset - SpriteAnim1
+	add hl, bc
+	ld [hl], a
+	ret
+; 120f8 (4:60f8)
+
+Unknown_120f8: ; 120f8
+	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
+Unknown_12102: ; 12102
+	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
+; 1210c
+
+Function1210c: ; 1210c (4:610c)
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_UP
+	jr nz, .up
+	ld a, [hl]
+	and D_DOWN
+	jr nz, .down
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .left
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .right
+	ret
+.right
+	call Function1218b
+	and a
+	jr nz, .asm_12138
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	cp $9
+	jr nc, .asm_12135
+	inc [hl]
+	ret
+.asm_12135
+	ld [hl], $0
+	ret
+.asm_12138
+	cp $3
+	jr nz, .asm_1213d
+	xor a
+.asm_1213d
+	ld e, a
+	add a
+	add e
+	ld hl, $c
+	add hl, bc
+	ld [hl], a
+	ret
+.left
+	call Function1218b
+	and a
+	jr nz, .asm_12159
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_12156
+	dec [hl]
+	ret
+.asm_12156
+	ld [hl], $9
+	ret
+.asm_12159
+	cp $1
+	jr nz, .asm_1215f
+	ld a, $4
+.asm_1215f
+rept 2
+	dec a
+endr
+	ld e, a
+	add a
+	add e
+	ld hl, $c
+	add hl, bc
+	ld [hl], a
+	ret
+.down
+	ld hl, $d
+	add hl, bc
+	ld a, [hl]
+	cp $5
+	jr nc, .asm_12175
+	inc [hl]
+	ret
+.asm_12175
+	ld [hl], $0
+	ret
+.up
+	ld hl, $d
+	add hl, bc
+	ld a, [hl]
+	and a
+	jr z, .asm_12182
+	dec [hl]
+	ret
+.asm_12182
+	ld [hl], $5
+	ret
+
+Function12185: ; 12185 (4:6185)
+	ld hl, wc6d5
+	ld c, [hl]
+	inc hl
+	ld b, [hl]
+
+Function1218b: ; 1218b (4:618b)
+	ld hl, $d
+	add hl, bc
+	ld a, [hl]
+	cp $5
+	jr nz, .asm_121aa
+	ld hl, $c
+	add hl, bc
+	ld a, [hl]
+	cp $3
+	jr c, .asm_121a4
+	cp $6
+	jr c, .asm_121a7
+	ld a, $3
+	ret
+.asm_121a4
+	ld a, $1
+	ret
+.asm_121a7
+	ld a, $2
+	ret
+.asm_121aa
+	xor a
+	ret
+
+Function121ac: ; 121ac (4:61ac)
+	ld a, [wc6d7]
+	jp Function11b17
+; 121b2 (4:61b2)
+
+Function121b2: ; unreferenced
+	ld a, [wc6d2]
+	and a
+	ret z
+	cp $11
+	jr nz, .asm_121c3
+	push hl
+	ld hl, wc6d2
+rept 2
+	dec [hl]
+endr
+	jr .asm_121c8
+
+.asm_121c3
+	push hl
+	ld hl, wc6d2
+	dec [hl]
+
+.asm_121c8
+	call Function11bd0
+	ld c, [hl]
+	pop hl
+.asm_121cd
+	ld a, [hli]
+	cp $ff
+	jp z, Function11b27
+	cp c
+	jr z, .asm_121d9
+	inc hl
+	jr .asm_121cd
+
+.asm_121d9
+	ld a, [hl]
+	jp Function11b23
+; 121dd
+
+MailEntry_Uppercase: ; 122dd
+	db "A B C D E F G H I J"
+	db "K L M N O P Q R S T"
+	db "U V W X Y Z   , ? !"
+	db "1 2 3 4 5 6 7 8 9 0"
+	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
+	db "lower  DEL   END   "
+; 1224f
+
+MailEntry_Lowercase: ; 1224f
+	db "a b c d e f g h i j"
+	db "k l m n o p q r s t"
+	db "u v w x y z   . - /"
+	db "'d 'l 'm 'r 's 't 'v & ( )"
+	db "<``> <''> [ ] ' : ;      "
+	db "UPPER  DEL   END   "
+; 122c1
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -3080,7 +3080,7 @@
 ; 2961b
 
 Function2961b: ; 2961b
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, $e
 	call _InitSpriteAnimStruct
 	call Function29114
@@ -3090,7 +3090,7 @@
 ; 2962c
 
 Function2962c: ; 2962c
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, $e
 	call _InitSpriteAnimStruct
 	ld hl, $b
@@ -3106,7 +3106,7 @@
 ; 29649
 
 Function29649: ; 29649
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, $f
 	call _InitSpriteAnimStruct
 	call Function29114
@@ -3120,7 +3120,7 @@
 Function29660: ; 29660
 	ld a, $e4
 	call Functioncf8
-	lb de, $28, $58
+	depixel 5, 11
 	ld a, $10
 	call _InitSpriteAnimStruct
 	call Function29114
--- a/engine/mail.asm
+++ b/engine/mail.asm
@@ -286,13 +286,13 @@
 ; 44781 (11:4781)
 
 
-Function44781: ; 44781
+IsAnyMonHoldingMail: ; 44781
 	ld a, [PartyCount]
 	and a
-	jr z, .asm_4479e
+	jr z, .no_mons
 	ld e, a
 	ld hl, PartyMon1Item
-.asm_4478b
+.loop
 	ld d, [hl]
 	push hl
 	push de
@@ -303,9 +303,9 @@
 	ld bc, PARTYMON_STRUCT_LENGTH
 	add hl, bc
 	dec e
-	jr nz, .asm_4478b
+	jr nz, .loop
 
-.asm_4479e
+.no_mons
 	and a
 	ret
 ; 447a0
@@ -327,21 +327,21 @@
 	db "@"
 
 InitMail: ; 0x447b9
-; initialize wd0f2 and beyond with incrementing values, one per mail
+; initialize wMailboxCount and beyond with incrementing values, one per mail
 ; set z if no mail
 	ld a, BANK(sMailboxCount)
 	call GetSRAMBank
 	ld a, [sMailboxCount]
 	call CloseSRAM
-	ld hl, wd0f2
+	ld hl, wMailboxCount
 	ld [hli], a
 	and a
 
 	jr z, .done ; if no mail, we're done
 
-	; load values in memory with incrementing values starting at wd0f2
+	; load values in memory with incrementing values starting at wMailboxCount
 	ld b, a
-	ld a, $1
+	ld a, 1
 .loop
 	ld [hli], a
 	inc a
@@ -348,9 +348,9 @@
 	dec b
 	jr nz, .loop
 .done
-	ld [hl], $ff ; terminate
+	ld [hl], -1 ; terminate
 
-	ld a, [wd0f2]
+	ld a, [wMailboxCount]
 	and a
 	ret
 ; 0x447da
@@ -385,7 +385,7 @@
 	xor a
 	ld [OBPals + 8 * 6], a
 	ld a, $1
-	ld [wd0f1], a
+	ld [wCurMessageIndex], a
 .loop
 	call InitMail
 	ld hl, MenuData4494c
@@ -394,7 +394,8 @@
 	ld [hBGMapMode], a
 	call InitScrollingMenu
 	call UpdateSprites
-	ld a, [wd0f1]
+
+	ld a, [wCurMessageIndex]
 	ld [wMenuCursorBuffer], a
 	ld a, [OBPals + 8 * 6]
 	ld [wd0e4], a
@@ -402,7 +403,8 @@
 	ld a, [wd0e4]
 	ld [OBPals + 8 * 6], a
 	ld a, [MenuSelection2]
-	ld [wd0f1], a
+	ld [wCurMessageIndex], a
+
 	ld a, [wcf73]
 	cp $2
 	jr z, .exit
@@ -558,7 +560,7 @@
 MenuData4494c: ; 0x4494c
 	db %01000000 ; flags
 	db 1, 8 ; start coords
-	db $a, $12 ; end coords
+	db 10, 18 ; end coords
 	dw .MenuData2
 	db 1 ; default option
 
@@ -566,7 +568,7 @@
 	db %00010000 ; flags
 	db 4, 0 ; rows/columns?
 	db 1 ; horizontal spacing?
-	dbw 0,wd0f2 ; text pointer
+	dbw 0, wMailboxCount ; text pointer
 	dba Function447fb
 	dbw 0,0
 	dbw 0,0
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -173,7 +173,7 @@
 	ld hl, wc300
 	ld [hli], a
 	ld [hl], a
-	lb de, $24, $20
+	depixel 4, 4, 4, 0
 	ld a, SPRITE_ANIM_INDEX_0A
 	call _InitSpriteAnimStruct
 	ld hl, $1
@@ -230,7 +230,7 @@
 	ld b, SPRITE_ANIM_INDEX_1E
 .asm_11873
 	ld a, b
-	lb de, $24, $20
+	depixel 4, 4, 4, 0
 	call _InitSpriteAnimStruct
 	ret
 
@@ -400,10 +400,10 @@
 
 
 Function1197b: ; 1197b (4:597b)
-	lb de, $50, $18
+	depixel 10, 3
 	call Function1189c
 	jr nz, .asm_11985
-	ld d, $40
+	ld d, 8 * 8
 .asm_11985
 	ld a, SPRITE_ANIM_INDEX_02
 	call _InitSpriteAnimStruct
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -149,7 +149,7 @@
 ; 90d32
 
 Function90d32: ; 90d32 (24:4d32)
-	lb de, $24, $10
+	depixel 4, 2, 4, 0
 	ld a, SPRITE_ANIM_INDEX_0D
 	call _InitSpriteAnimStruct
 	ld hl, $3
@@ -762,7 +762,7 @@
 
 Function910f9: ; 910f9 (24:50f9)
 	call Function90da8
-	lb de, $24, $54
+	depixel 4, 10, 4, 4
 	ld a, SPRITE_ANIM_INDEX_14
 	call _InitSpriteAnimStruct
 	ld hl, $3
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -1037,7 +1037,7 @@
 	call Function92fc0
 	push bc
 	push af
-	lb de, $60, $68
+	depixel 12, 13
 	ld a, SPRITE_ANIM_INDEX_06
 	call _InitSpriteAnimStruct
 	ld hl, $e
@@ -1096,7 +1096,7 @@
 	add hl, bc
 	ld [hl], $0
 	push bc
-	lb de, $60, $00
+	depixel 12, 0
 	ld a, SPRITE_ANIM_INDEX_07
 	call _InitSpriteAnimStruct
 	pop bc
@@ -2063,7 +2063,7 @@
 	add hl, bc
 	dec [hl]
 	push bc
-	lb de, $60, $6c
+	depixel 12, 13, 0, 4
 	ld a, SPRITE_ANIM_INDEX_08
 	call _InitSpriteAnimStruct
 	pop bc
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -615,7 +615,7 @@
 	dw .nine
 	dw .ten
 	dw .eleven
-	dw .twelve
+	dw .twelve      ; blinking cursor
 	dw .thirteen
 	dw .fourteen
 	dw .fifteen
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -1069,7 +1069,7 @@
 
 Function12cfe: ; 12cfe (4:6cfe)
 	ld de, wd002
-	callba Function11e75
+	callba ComposeMailMessage
 	ld hl, PlayerName
 	ld de, wd023
 	ld bc, NAME_LENGTH - 1
--- a/event/celebi.asm
+++ b/event/celebi.asm
@@ -5,7 +5,7 @@
 	xor a
 	ld [VramState], a
 	call LoadCelebiGFX
-	lb de, $07, $50
+	depixel 0, 10, 7, 0
 	ld a, SPRITE_ANIM_INDEX_2C
 	call _InitSpriteAnimStruct
 	ld hl, $3
binary files /dev/null b/gfx/icon/mail2.2bpp differ
binary files a/gfx/unknown/011ef4.2bpp /dev/null differ
--- a/macros.asm
+++ b/macros.asm
@@ -211,3 +211,13 @@
 ENDM
 
 palettes EQUS "* 8"
+
+ldpixel: MACRO
+if _NARG == 5
+	lb \1, \2 * 8 + \4, \3 * 8 + \5
+else
+	lb \1, \2 * 8, \3 * 8
+endc
+	endm
+
+depixel EQUS "ldpixel de,"
--- a/main.asm
+++ b/main.asm
@@ -9795,29 +9795,29 @@
 ; e3fd
 
 _BillsPC: ; e3fd
-	call Functione40a
+	call .CheckCanUsePC
 	ret c
-	call Functione41c
-	call Functione443
-	jp Functione43f
+	call .LogIn
+	call .UseBillsPC
+	jp .LogOut
 
-Functione40a: ; e40a (3:640a)
+.CheckCanUsePC: ; e40a (3:640a)
 	ld a, [PartyCount]
 	and a
 	ret nz
-	ld hl, UnknownText_0xe417
+	ld hl, .Text_GottaHavePokemon
 	call MenuTextBoxBackup
 	scf
 	ret
 ; e417 (3:6417)
 
-UnknownText_0xe417: ; 0xe417
+.Text_GottaHavePokemon: ; 0xe417
 	; You gotta have #MON to call!
 	text_jump UnknownText_0x1c1006
 	db "@"
 ; 0xe41c
 
-Functione41c: ; e41c (3:641c)
+.LogIn: ; e41c (3:641c)
 	xor a
 	ld [hBGMapMode], a
 	call LoadStandardMenuDataHeader
@@ -9826,7 +9826,7 @@
 	ld a, [hl]
 	push af
 	set NO_TEXT_SCROLL, [hl]
-	ld hl, UnknownText_0xe43a
+	ld hl, .Text_What
 	call PrintText
 	pop af
 	ld [Options], a
@@ -9834,17 +9834,17 @@
 	ret
 ; e43a (3:643a)
 
-UnknownText_0xe43a: ; 0xe43a
+.Text_What: ; 0xe43a
 	; What?
 	text_jump UnknownText_0x1c1024
 	db "@"
 ; 0xe43f
 
-Functione43f: ; e43f (3:643f)
+.LogOut: ; e43f (3:643f)
 	call ReturnToCallingMenu
 	ret
 
-Functione443: ; e443 (3:6443)
+.UseBillsPC: ; e443 (3:6443)
 	ld hl, .MenuDataHeader
 	call LoadMenuDataHeader
 	ld a, $1
@@ -9917,9 +9917,9 @@
 
 BillsPC_MovePKMNMenu: ; e4cd
 	call LoadStandardMenuDataHeader
-	callba Function44781
+	callba IsAnyMonHoldingMail
 	jr nc, .no_mail
-	ld hl, UnknownText_0xe4f9
+	ld hl, .Text_MonHoldingMail
 	call PrintText
 	jr .quit
 
@@ -9936,7 +9936,7 @@
 	ret
 ; e4f9
 
-UnknownText_0xe4f9: ; 0xe4f9
+.Text_MonHoldingMail: ; 0xe4f9
 	; There is a #MON holding MAIL. Please remove the MAIL.
 	text_jump UnknownText_0x1c102b
 	db "@"
@@ -9955,32 +9955,32 @@
 Functione512: ; unused
 	ld a, [PartyCount]
 	and a
-	jr z, .asm_e51e
+	jr z, .no_pkmn
 	cp 2
-	jr c, .asm_e526
+	jr c, .only_one_pkmn
 	and a
 	ret
 
-.asm_e51e
-	ld hl, UnknownText_0xe52e
+.no_pkmn
+	ld hl, .Text_NoPKMN
 	call MenuTextBoxBackup
 	scf
 	ret
 
-.asm_e526
-	ld hl, UnknownText_0xe533
+.only_one_pkmn
+	ld hl, .Text_ItsYourLastPKMN
 	call MenuTextBoxBackup
 	scf
 	ret
 ; e52e
 
-UnknownText_0xe52e: ; 0xe52e
+.Text_NoPKMN: ; 0xe52e
 	; You don't have a single #MON!
 	text_jump UnknownText_0x1c1062
 	db "@"
 ; 0xe533
 
-UnknownText_0xe533: ; 0xe533
+.Text_ItsYourLastPKMN: ; 0xe533
 	; You can't deposit your last #MON!
 	text_jump UnknownText_0x1c1080
 	db "@"
@@ -10407,507 +10407,11 @@
 SECTION "bank4", ROMX, BANK[$4]
 
 INCLUDE "engine/pack.asm"
-
 INCLUDE "engine/time.asm"
-
 INCLUDE "engine/tmhm.asm"
-
 INCLUDE "engine/namingscreen.asm"
+INCLUDE "engine/compose_mail.asm"
 
-Function11e75: ; 11e75 (mail?)
-	ld hl, wc6d0
-	ld [hl], e
-	inc hl
-	ld [hl], d
-	ld a, [hMapAnims]
-	push af
-	xor a
-	ld [hMapAnims], a
-	ld a, [hInMenu]
-	push af
-	ld a, $1
-	ld [hInMenu], a
-	call Function11e9a
-	call DelayFrame
-.asm_11e8e
-	call Function11fc0
-	jr nc, .asm_11e8e
-	pop af
-	ld [hInMenu], a
-	pop af
-	ld [hMapAnims], a
-	ret
-
-Function11e9a: ; 11e9a (4:5e9a)
-	call ClearBGPalettes
-	call DisableLCD
-	call Function11c51
-	ld de, VTiles0 tile $00
-	ld hl, GFX_11ef4
-	ld bc, $80
-	ld a, BANK(GFX_11ef4)
-	call FarCopyBytes
-	xor a
-	ld hl, wc300
-	ld [hli], a
-	ld [hl], a
-	lb de, $18, $10
-	ld a, SPRITE_ANIM_INDEX_00
-	call _InitSpriteAnimStruct
-	ld hl, $2
-	add hl, bc
-	ld [hl], $0
-	call Function11f84
-	ld a, $e3
-	ld [rLCDC], a
-	call Function11f74
-	ld b, SCGB_08
-	call GetSGBLayout
-	call WaitBGMap
-	call WaitTop
-	ld a, %11100100
-	call DmgToCgbBGPals
-	ld a, %11100100
-	call Functioncf8
-	call Function11be0
-	ld hl, wc6d0
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	ld hl, $10
-	add hl, de
-	ld [hl], $4e
-	ret
-; 11ef4 (4:5ef4)
-
-GFX_11ef4: ; 11ef4
-INCBIN "gfx/unknown/011ef4.2bpp"
-; 11f74
-
-Function11f74: ; 11f74 (4:5f74)
-	ld a, $21
-	ld [wc6d3], a
-	ret
-; 11f7a (4:5f7a)
-
-String_11f7a: ; dummied out
-	db "メールを かいてね@"
-; 11f84
-
-Function11f84: ; 11f84 (4:5f84)
-	call WaitTop
-	hlcoord 0, 0
-	ld bc, 6 * SCREEN_WIDTH
-	ld a, $60
-	call ByteFill
-	hlcoord 0, 6
-	ld bc, 12 * SCREEN_WIDTH
-	ld a, " "
-	call ByteFill
-	hlcoord 1, 1
-	lb bc, 4, SCREEN_WIDTH - 2
-	call ClearBox
-	ld de, String_121dd
-
-Function11fa9: ; 11fa9 (4:5fa9)
-	hlcoord 1, 7
-	ld b, 6
-.next
-	ld c, SCREEN_WIDTH - 1
-.loop
-	ld a, [de]
-	ld [hli], a
-	inc de
-	dec c
-	jr nz, .loop
-	push de
-	ld de, 21
-	add hl, de
-	pop de
-	dec b
-	jr nz, .next
-	ret
-
-Function11fc0: ; 11fc0 (4:5fc0)
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_11fdb
-	call Function12008
-	callba Function8cf62
-	call Function11feb
-	call DelayFrame
-	and a
-	ret
-.asm_11fdb
-	callab Function8cf53
-	call ClearSprites
-	xor a
-	ld [hSCX], a
-	ld [hSCY], a
-	scf
-	ret
-
-Function11feb: ; 11feb (4:5feb)
-	xor a
-	ld [hBGMapMode], a
-	hlcoord 1, 1
-	lb bc, 4, 18
-	call ClearBox
-	ld hl, wc6d0
-	ld e, [hl]
-	inc hl
-	ld d, [hl]
-	hlcoord 2, 2
-	call PlaceString
-	ld a, $1
-	ld [hBGMapMode], a
-	ret
-
-Function12008: ; 12008 (4:6008)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_12017
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_12017: ; 12017 (4:6017)
-	dw Function1201b
-	dw Function1203a
-
-
-Function1201b: ; 1201b (4:601b)
-	lb de, $48, $10
-	ld a, SPRITE_ANIM_INDEX_09
-	call _InitSpriteAnimStruct
-	ld a, c
-	ld [wc6d5], a
-	ld a, b
-	ld [wc6d6], a
-	ld hl, $1
-	add hl, bc
-	ld a, [hl]
-	ld hl, $e
-	add hl, bc
-	ld [hl], a
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-Function1203a: ; 1203a (4:603a)
-	ld hl, hJoyPressed ; $ffa7
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, .a
-	ld a, [hl]
-	and B_BUTTON
-	jr nz, .b
-	ld a, [hl]
-	and START
-	jr nz, .start
-	ld a, [hl]
-	and SELECT
-	jr nz, .select
-	ret
-
-.a
-	call Function12185
-	cp $1
-	jr z, .select
-	cp $2
-	jr z, .b
-	cp $3
-	jr z, .asm_120a1
-	call Function11c11
-	call Function121ac
-	jr c, .start
-	ld hl, wc6d2
-	ld a, [hl]
-	cp $10
-	ret nz
-	inc [hl]
-	call Function11bd0
-	ld [hl], $f2
-	dec hl
-	ld [hl], $4e
-	ret
-
-.start
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-	ld hl, $c
-	add hl, bc
-	ld [hl], $9
-	ld hl, $d
-	add hl, bc
-	ld [hl], $5
-	ret
-
-.b
-	call Function11bbc
-	ld hl, wc6d2
-	ld a, [hl]
-	cp $10
-	ret nz
-	dec [hl]
-	call Function11bd0
-	ld [hl], $f2
-	inc hl
-	ld [hl], $4e
-	ret
-
-.asm_120a1
-	call Function11bf7
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-.select
-	ld hl, wcf64
-	ld a, [hl]
-	xor $1
-	ld [hl], a
-	jr nz, .asm_120ba
-	ld de, String_121dd
-	call Function11fa9
-	ret
-.asm_120ba
-	ld de, String_1224f
-	call Function11fa9
-	ret
-
-Function120c1: ; 120c1 (4:60c1)
-	call Function1210c
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	ld e, a
-	swap e
-	ld hl, $7
-	add hl, bc
-	ld [hl], e
-	cp $5
-	ld de, Unknown_120f8
-	ld a, $0
-	jr nz, .asm_120df
-	ld de, Unknown_12102
-	ld a, $1
-.asm_120df
-	ld hl, $e
-	add hl, bc
-	add [hl]
-	ld hl, $1
-	add hl, bc
-	ld [hl], a
-	ld hl, $c
-	add hl, bc
-	ld l, [hl]
-	ld h, $0
-	add hl, de
-	ld a, [hl]
-	ld hl, $6
-	add hl, bc
-	ld [hl], a
-	ret
-; 120f8 (4:60f8)
-
-Unknown_120f8: ; 120f8
-	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
-Unknown_12102: ; 12102
-	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
-; 1210c
-
-Function1210c: ; 1210c (4:610c)
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_UP
-	jr nz, .up
-	ld a, [hl]
-	and D_DOWN
-	jr nz, .down
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .left
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .right
-	ret
-.right
-	call Function1218b
-	and a
-	jr nz, .asm_12138
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	cp $9
-	jr nc, .asm_12135
-	inc [hl]
-	ret
-.asm_12135
-	ld [hl], $0
-	ret
-.asm_12138
-	cp $3
-	jr nz, .asm_1213d
-	xor a
-.asm_1213d
-	ld e, a
-	add a
-	add e
-	ld hl, $c
-	add hl, bc
-	ld [hl], a
-	ret
-.left
-	call Function1218b
-	and a
-	jr nz, .asm_12159
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_12156
-	dec [hl]
-	ret
-.asm_12156
-	ld [hl], $9
-	ret
-.asm_12159
-	cp $1
-	jr nz, .asm_1215f
-	ld a, $4
-.asm_1215f
-rept 2
-	dec a
-endr
-	ld e, a
-	add a
-	add e
-	ld hl, $c
-	add hl, bc
-	ld [hl], a
-	ret
-.down
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	cp $5
-	jr nc, .asm_12175
-	inc [hl]
-	ret
-.asm_12175
-	ld [hl], $0
-	ret
-.up
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	and a
-	jr z, .asm_12182
-	dec [hl]
-	ret
-.asm_12182
-	ld [hl], $5
-	ret
-
-Function12185: ; 12185 (4:6185)
-	ld hl, wc6d5
-	ld c, [hl]
-	inc hl
-	ld b, [hl]
-
-Function1218b: ; 1218b (4:618b)
-	ld hl, $d
-	add hl, bc
-	ld a, [hl]
-	cp $5
-	jr nz, .asm_121aa
-	ld hl, $c
-	add hl, bc
-	ld a, [hl]
-	cp $3
-	jr c, .asm_121a4
-	cp $6
-	jr c, .asm_121a7
-	ld a, $3
-	ret
-.asm_121a4
-	ld a, $1
-	ret
-.asm_121a7
-	ld a, $2
-	ret
-.asm_121aa
-	xor a
-	ret
-
-Function121ac: ; 121ac (4:61ac)
-	ld a, [wc6d7]
-	jp Function11b17
-; 121b2 (4:61b2)
-
-Function121b2: ; unreferenced
-	ld a, [wc6d2]
-	and a
-	ret z
-	cp $11
-	jr nz, .asm_121c3
-	push hl
-	ld hl, wc6d2
-rept 2
-	dec [hl]
-endr
-	jr .asm_121c8
-
-.asm_121c3
-	push hl
-	ld hl, wc6d2
-	dec [hl]
-
-.asm_121c8
-	call Function11bd0
-	ld c, [hl]
-	pop hl
-.asm_121cd
-	ld a, [hli]
-	cp $ff
-	jp z, Function11b27
-	cp c
-	jr z, .asm_121d9
-	inc hl
-	jr .asm_121cd
-
-.asm_121d9
-	ld a, [hl]
-	jp Function11b23
-; 121dd
-
-String_121dd: ; 122dd
-	db "A B C D E F G H I J"
-	db "K L M N O P Q R S T"
-	db "U V W X Y Z   , ? !"
-	db "1 2 3 4 5 6 7 8 9 0"
-	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
-	db "lower  DEL   END   "
-; 1224f
-
-String_1224f: ; 1224f
-	db "a b c d e f g h i j"
-	db "k l m n o p q r s t"
-	db "u v w x y z   . - /"
-	db "'d 'l 'm 'r 's 't 'v & ( )"
-	db "<``> <''> [ ] ' : ;      "
-	db "UPPER  DEL   END   "
-; 122c1
-
 Script_AbortBugContest: ; 0x122c1
 	checkflag ENGINE_BUG_CONTEST_TIMER
 	iffalse .finish
@@ -30083,7 +29587,7 @@
 	xor a
 	ld [VramState], a
 	call Function8cb9b
-	lb de, $54, $50
+	depixel 10, 10, 4, 0
 	ld a, SPRITE_ANIM_INDEX_0A
 	call _InitSpriteAnimStruct
 	ld hl, $3
@@ -30117,7 +29621,7 @@
 	xor a
 	ld [VramState], a
 	call Function8cb9b
-	lb de, $fc, $50
+	depixel 31, 10, 4, 0
 	ld a, SPRITE_ANIM_INDEX_0A
 	call _InitSpriteAnimStruct
 	ld hl, $3
@@ -32438,7 +31942,7 @@
 	ld [rSVBK], a
 
 	callba Function8cf53
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_03
 	call _InitSpriteAnimStruct
 	ld hl, $7
@@ -33118,7 +32622,7 @@
 	ld [hWY], a
 	call Functione5516
 	callba Function8cf53
-	lb de, $6c, $d8
+	depixel 13, 27, 4, 0
 	ld a, SPRITE_ANIM_INDEX_26
 	call _InitSpriteAnimStruct
 	ld a, $f0
@@ -33206,7 +32710,7 @@
 	ret
 
 .pichu
-	lb de, $a9, $80
+	depixel 21, 16, 1, 0
 	ld a, SPRITE_ANIM_INDEX_27
 	call _InitSpriteAnimStruct
 	ld de, SFX_INTRO_PICHU
@@ -33214,7 +32718,7 @@
 	ret
 
 .wooper
-	lb de, $b0, $30
+	depixel 22, 6
 	ld a, SPRITE_ANIM_INDEX_28
 	call _InitSpriteAnimStruct
 	ld de, SFX_INTRO_PICHU
@@ -33392,7 +32896,7 @@
 	ld a, $90
 	ld [hWY], a
 	callba Function8cf53
-	lb de, $6c, $58
+	depixel 13, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_26
 	call _InitSpriteAnimStruct
 	ld de, MUSIC_CRYSTAL_OPENING
@@ -33503,10 +33007,10 @@
 	ld [hWY], a
 	callba Function8cf53
 	call Functione549e
-	lb de, $40, $28
+	depixel 8, 5
 	ld a, SPRITE_ANIM_INDEX_2A
 	call _InitSpriteAnimStruct
-	lb de, $60, $00
+	depixel 12, 0
 	ld a, SPRITE_ANIM_INDEX_2B
 	call _InitSpriteAnimStruct
 	xor a
@@ -33655,7 +33159,7 @@
 	ld [hli], a
 	ld [hl], $7f
 	call Functione549e
-	lb de, $60, $00
+	depixel 12, 0
 	ld a, SPRITE_ANIM_INDEX_2B
 	call _InitSpriteAnimStruct
 	xor a
--- a/misc/battle_tower_47.asm
+++ b/misc/battle_tower_47.asm
@@ -494,10 +494,10 @@
 
 
 Function11c2e9: ; 11c2e9 (47:42e9)
-	lb de, $1a, $0d
+	depixel 3, 1, 2, 5
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
-	lb de, $42, $0d
+	depixel 8, 1, 2, 5
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
 	ld hl, $c
@@ -504,7 +504,7 @@
 	add hl, bc
 	ld a, $1
 	ld [hl], a
-	lb de, $4a, $10
+	depixel 9, 2, 2, 0
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
 	ld hl, $c
@@ -511,7 +511,7 @@
 	add hl, bc
 	ld a, $3
 	ld [hl], a
-	lb de, $50, $80
+	depixel 10, 16
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
 	ld hl, $c
@@ -518,7 +518,7 @@
 	add hl, bc
 	ld a, $4
 	ld [hl], a
-	lb de, $50, $20
+	depixel 10, 4
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
 	ld hl, $c
@@ -525,7 +525,7 @@
 	add hl, bc
 	ld a, $5
 	ld [hl], a
-	lb de, $50, $10
+	depixel 10, 2
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
 	ld hl, $c
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -492,7 +492,7 @@
 	ld c, $50
 	call DelayFrames
 	call Function108bec
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_20
 	call _InitSpriteAnimStruct
 	ld de, SFX_BALL_POOF
@@ -527,7 +527,7 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_21
 	call _InitSpriteAnimStruct
 	call Function108b45
@@ -627,7 +627,7 @@
 	ld c, $50
 	call DelayFrames
 	call Function108c2b
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_20
 	call _InitSpriteAnimStruct
 	ld de, SFX_BALL_POOF
@@ -671,7 +671,7 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_21
 	call _InitSpriteAnimStruct
 	call Function108b45
@@ -740,7 +740,7 @@
 	ld [hWX], a
 	ld a, $90
 	ld [hWY], a
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_21
 	call _InitSpriteAnimStruct
 	call Function108b45
@@ -927,7 +927,7 @@
 	ld [hSCX], a
 	cp $f8
 	jr nz, .asm_10878a
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_22
 	call _InitSpriteAnimStruct
 
@@ -953,7 +953,7 @@
 	jr .asm_1087c4
 
 .asm_1087a9
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_22
 	call _InitSpriteAnimStruct
 	xor a
@@ -985,7 +985,7 @@
 	call Function1082f0
 	call Function108af4
 	call Function108b5a
-	lb de, $4a, $50
+	depixel 9, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_25
 	call _InitSpriteAnimStruct
 	ld de, SFX_FORESIGHT
@@ -994,7 +994,7 @@
 	call Function1082cc
 	xor a
 	ld [wcf64], a
-	lb de, $4a, $50
+	depixel 9, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_23
 	call _InitSpriteAnimStruct
 .asm_1087fc
@@ -1021,7 +1021,7 @@
 	call PlaySFX
 	ld c, $3c
 	call Function1082cc
-	lb de, $f2, $50
+	depixel 30, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_24
 	call _InitSpriteAnimStruct
 	call Function1082b7
@@ -1044,7 +1044,7 @@
 Function10884c: ; 10884c
 	ld c, 80
 	call DelayFrames
-	lb de, $f2, $50
+	depixel 30, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_24
 	call _InitSpriteAnimStruct
 	call Function1082b7
@@ -1068,7 +1068,7 @@
 
 .asm_108879
 	callba Function8d03d
-	lb de, $4a, $50
+	depixel 9, 10, 2, 0
 	ld a, SPRITE_ANIM_INDEX_25
 	call _InitSpriteAnimStruct
 	ld de, SFX_GLASS_TING_2
@@ -1105,13 +1105,13 @@
 	jr .asm_1088e7
 
 .asm_1088c5
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_22
 	call _InitSpriteAnimStruct
 	jr .asm_1088e7
 
 .asm_1088cf
-	lb de, $54, $58
+	depixel 10, 11, 4, 0
 	ld a, SPRITE_ANIM_INDEX_22
 	call _InitSpriteAnimStruct
 	xor a
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -7757,7 +7757,7 @@
 
 Function117738: ; 117738 (45:7738)
 	callba Function171ccd
-	lb de, $30, $18
+	depixel 6, 3
 	ld a, $1d
 	call _InitSpriteAnimStruct
 	ld hl, $c
@@ -7764,7 +7764,7 @@
 	add hl, bc
 	ld a, $6
 	ld [hl], a
-	lb de, $48, $20
+	depixel 9, 4
 	ld a, $1d
 	call _InitSpriteAnimStruct
 	ld hl, $c
--- a/misc/mobile_5c.asm
+++ b/misc/mobile_5c.asm
@@ -1859,7 +1859,7 @@
 	jr Function171b42
 
 Function171b4b: ; 171b4b (5c:5b4b)
-	lb de, $40, $10
+	depixel 8, 2
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
 	ld hl, $c
@@ -1866,7 +1866,7 @@
 	add hl, bc
 	ld a, $8
 	ld [hl], a
-	lb de, $40, $98
+	depixel 8, 19
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
 	ld hl, $c
@@ -1873,7 +1873,7 @@
 	add hl, bc
 	ld a, $9
 	ld [hl], a
-	lb de, $8a, $70
+	depixel 17, 14, 2, 0
 	ld a, SPRITE_ANIM_INDEX_1D
 	call _InitSpriteAnimStruct
 	ld hl, $c
--- a/wram.asm
+++ b/wram.asm
@@ -387,18 +387,22 @@
 wSpriteAnimationStructs::
 
 sprite_anim_struct: MACRO
-\1Index:: ds 1
-	ds 1
-\1AnimSeqID:: ds 1
-\1TileID:: ds 1
-\1XCoord:: ds 1
-\1YCoord:: ds 1
-\1XOffset:: ds 1
-\1YOffset:: ds 1
-\1FrameTimer:: ds 1
-	ds 1
-\1FrameIndex:: ds 1
-	ds 5
+\1Index:: ds 1      ; 0
+\1Sprite01:: ds 1   ; 1
+\1AnimSeqID:: ds 1  ; 2
+\1TileID:: ds 1     ; 3
+\1XCoord:: ds 1     ; 4
+\1YCoord:: ds 1     ; 5
+\1XOffset:: ds 1    ; 6
+\1YOffset:: ds 1    ; 7
+\1FrameTimer:: ds 1 ; 8 
+\1Sprite09:: ds 1   ; 9
+\1FrameIndex:: ds 1 ; a
+\1Sprite0b:: ds 1
+\1Sprite0c:: ds 1
+\1Sprite0d:: ds 1
+\1Sprite0e:: ds 1
+\1Sprite0f:: ds 1
 ENDM
 
 ; Field  0: Index
@@ -1658,15 +1662,19 @@
 
 wBattleResult:: ds 1
 wd0ef:: ds 1
-wd0f0::
-CurMart:: ; d0f0
-	; ds 16
-	ds 1
-wd0f1:: ds 1
-wd0f2:: ds 14
+CurMart:: ds 16
+	ds CurMart - @
+wd0f0:: ds 1
+wd0f1::
+wCurMessageIndex:: ds 1
+wd0f2::
+wMailboxCount:: ds 1
+wMailboxItems:: ds MAILBOX_CAPACITY
+wMailboxEnd:: ds 1 ; d1fe
+	ds 2
 CurMartEnd::
-wd100:: ds 1
 
+wd100:: ds 1
 wd101:: ds 1
 wd102:: ds 1
 wd103:: ds 1