summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2015-11-18 13:01:55 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2015-11-18 13:01:55 -0500
commit3f4044cd4628c156e975971ce0655d3d51917b87 (patch)
tree28882142ed38749204c6d7a4a1199c0585907ef4 /engine
parent6d47be8d8c02317a963c6ff5266a50a8674d285d (diff)
engine/compose_mail.asm; ldpixel
Diffstat (limited to 'engine')
-rwxr-xr-xengine/compose_mail.asm498
-rwxr-xr-xengine/link.asm8
-rwxr-xr-xengine/mail.asm34
-rwxr-xr-xengine/namingscreen.asm8
-rwxr-xr-xengine/pokegear.asm4
-rwxr-xr-xengine/slot_machine.asm6
-rwxr-xr-xengine/sprites.asm2
-rwxr-xr-xengine/startmenu.asm2
8 files changed, 531 insertions, 31 deletions
diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm
new file mode 100755
index 000000000..35990431e
--- /dev/null
+++ b/engine/compose_mail.asm
@@ -0,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
diff --git a/engine/link.asm b/engine/link.asm
index 28b420543..afc4f2d2e 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -3080,7 +3080,7 @@ Function29611: ; 29611
; 2961b
Function2961b: ; 2961b
- lb de, $54, $58
+ depixel 10, 11, 4, 0
ld a, $e
call _InitSpriteAnimStruct
call Function29114
@@ -3090,7 +3090,7 @@ Function2961b: ; 2961b
; 2962c
Function2962c: ; 2962c
- lb de, $54, $58
+ depixel 10, 11, 4, 0
ld a, $e
call _InitSpriteAnimStruct
ld hl, $b
@@ -3106,7 +3106,7 @@ Function2962c: ; 2962c
; 29649
Function29649: ; 29649
- lb de, $54, $58
+ depixel 10, 11, 4, 0
ld a, $f
call _InitSpriteAnimStruct
call Function29114
@@ -3120,7 +3120,7 @@ Function29649: ; 29649
Function29660: ; 29660
ld a, $e4
call Functioncf8
- lb de, $28, $58
+ depixel 5, 11
ld a, $10
call _InitSpriteAnimStruct
call Function29114
diff --git a/engine/mail.asm b/engine/mail.asm
index 5748536dc..c0bc591b0 100755
--- a/engine/mail.asm
+++ b/engine/mail.asm
@@ -286,13 +286,13 @@ DeletePartyMonMail: ; 44765 (11:4765)
; 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 @@ Function44781: ; 44781
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,30 +327,30 @@ _KrisMailBoxMenu: ; 0x447a0
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
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 @@ MailboxPC: ; 0x44806
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 @@ MailboxPC: ; 0x44806
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 @@ MailboxPC: ; 0x44806
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 @@ Function4484a: ; 0x4484a
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 @@ MenuData4494c: ; 0x4494c
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
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index 3b381a016..c62dc1a0f 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -173,7 +173,7 @@ Function117f5: ; 117f5 (4:57f5)
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 @@ Function11847: ; 11847 (4:5847)
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 @@ Jumptable_11977: ; 11977 (4:5977)
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
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index 02684aaab..424669b20 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -149,7 +149,7 @@ INCBIN "gfx/misc/fast_ship.2bpp"
; 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 @@ Function910e8: ; 910e8
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
diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm
index 8318942fe..6f53bb6b3 100755
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -1037,7 +1037,7 @@ Function92d20: ; 92d20
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 @@ Function92d7e: ; 92d7e
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 @@ Function932fc: ; 932fc (24:72fc)
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
diff --git a/engine/sprites.asm b/engine/sprites.asm
index e95894292..b8b4b2a47 100755
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -615,7 +615,7 @@ endr
dw .nine
dw .ten
dw .eleven
- dw .twelve
+ dw .twelve ; blinking cursor
dw .thirteen
dw .fourteen
dw .fifteen
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index ae6358014..94082ccad 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -1069,7 +1069,7 @@ StartMenuYesNo: ; 12cf5
Function12cfe: ; 12cfe (4:6cfe)
ld de, wd002
- callba Function11e75
+ callba ComposeMailMessage
ld hl, PlayerName
ld de, wd023
ld bc, NAME_LENGTH - 1