pokecrystal-board/engine/pokemon/mail_2.asm

948 lines
16 KiB
NASM
Raw Normal View History

2020-11-03 16:53:07 -08:00
; MailGFXPointers indexes
; LoadMailPalettes.MailPals indexes (see gfx/mail/mail.pal)
const_def
const FLOWER_MAIL_INDEX ; 0
const SURF_MAIL_INDEX ; 1
const LITEBLUEMAIL_INDEX ; 2
const PORTRAITMAIL_INDEX ; 3
const LOVELY_MAIL_INDEX ; 4
const EON_MAIL_INDEX ; 5
const MORPH_MAIL_INDEX ; 6
const BLUESKY_MAIL_INDEX ; 7
const MUSIC_MAIL_INDEX ; 8
const MIRAGE_MAIL_INDEX ; 9
2021-10-24 15:25:44 -07:00
NUM_MAIL EQU const_value
2020-11-03 16:53:07 -08:00
2018-06-24 07:09:41 -07:00
ReadPartyMonMail:
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
2017-12-26 17:02:00 -08:00
ld hl, sPartyMail
ld bc, MAIL_STRUCT_LENGTH
call AddNTimes
ld d, h
ld e, l
2018-06-24 07:09:41 -07:00
ReadAnyMail:
2017-12-26 17:02:00 -08:00
push de
call ClearBGPalettes
call ClearSprites
call ClearTilemap
2017-12-26 17:02:00 -08:00
call DisableLCD
call LoadFontsExtra
pop de
push de
ld a, BANK(sPartyMail)
call OpenSRAM
2017-12-26 17:02:00 -08:00
farcall IsMailEuropean
call CloseSRAM
ld a, c
ld de, StandardEnglishFont
or a
jr z, .got_font
ld de, FrenchGermanFont
sub $3
jr c, .got_font
ld de, SpanishItalianFont
.got_font
2017-12-28 04:32:33 -08:00
ld hl, vTiles1
2017-12-26 17:02:00 -08:00
lb bc, BANK(StandardEnglishFont), $80
call Get1bpp
pop de
call .LoadGFX
call EnableLCD
call WaitBGMap
2020-11-03 16:53:07 -08:00
ld a, [wCurMailIndex]
2017-12-26 17:02:00 -08:00
ld e, a
farcall LoadMailPalettes
call SetPalettes
xor a
ldh [hJoyPressed], a
2017-12-26 17:02:00 -08:00
call .loop
call ClearBGPalettes
call DisableLCD
call LoadStandardFont
jp EnableLCD
.loop
call GetJoypad
ldh a, [hJoyPressed]
2017-12-26 17:02:00 -08:00
and A_BUTTON | B_BUTTON | START
jr z, .loop
vc_patch print_forbid_4
if DEF(_CRYSTAL11_VC)
and 0
else
2017-12-26 17:02:00 -08:00
and START
endc
vc_patch_end
2017-12-26 17:02:00 -08:00
jr nz, .pressed_start
ret
.pressed_start
ld a, [wJumptableIndex]
push af
callfar PrintMailAndExit ; printer
2017-12-26 17:02:00 -08:00
pop af
ld [wJumptableIndex], a
jr .loop
2018-06-24 07:09:41 -07:00
.LoadGFX:
2017-12-26 17:02:00 -08:00
ld h, d
ld l, e
push hl
ld a, BANK(sPartyMail)
call OpenSRAM
2017-12-26 17:02:00 -08:00
ld de, sPartyMon1MailAuthorID - sPartyMon1Mail
add hl, de
2020-11-03 16:53:07 -08:00
ld a, [hli] ; author id
ld [wCurMailAuthorID], a
2017-12-26 17:02:00 -08:00
ld a, [hli]
2020-11-03 16:53:07 -08:00
ld [wCurMailAuthorID + 1], a
ld a, [hli] ; species
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
2020-11-03 16:53:07 -08:00
ld b, [hl] ; type
2017-12-26 17:02:00 -08:00
call CloseSRAM
ld hl, MailGFXPointers
ld c, 0
.loop2
ld a, [hli]
cp b
jr z, .got_pointer
cp -1
jr z, .invalid
inc c
inc hl
inc hl
jr .loop2
.invalid
ld hl, MailGFXPointers
inc hl
.got_pointer
ld a, c
2020-11-03 16:53:07 -08:00
ld [wCurMailIndex], a
2017-12-26 17:02:00 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
ld de, .done
pop bc
push de
jp hl
.done
ret
2018-06-24 07:09:41 -07:00
MailGFXPointers:
2020-11-03 16:53:07 -08:00
; entries correspond to *MAIL_INDEX constants
2021-10-24 15:25:44 -07:00
table_width 3, MailGFXPointers
2017-12-26 17:02:00 -08:00
dbw FLOWER_MAIL, LoadFlowerMailGFX
dbw SURF_MAIL, LoadSurfMailGFX
dbw LITEBLUEMAIL, LoadLiteBlueMailGFX
dbw PORTRAITMAIL, LoadPortraitMailGFX
dbw LOVELY_MAIL, LoadLovelyMailGFX
dbw EON_MAIL, LoadEonMailGFX
dbw MORPH_MAIL, LoadMorphMailGFX
dbw BLUESKY_MAIL, LoadBlueSkyMailGFX
dbw MUSIC_MAIL, LoadMusicMailGFX
dbw MIRAGE_MAIL, LoadMirageMailGFX
2021-10-24 15:25:44 -07:00
assert_table_length NUM_MAIL
2020-11-03 16:53:07 -08:00
db -1 ; end
2017-12-26 17:02:00 -08:00
2018-06-24 07:09:41 -07:00
LoadSurfMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
2017-12-26 17:02:00 -08:00
ld de, SurfMailBorderGFX
ld c, 8 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MailLaprasGFX
ld c, 6 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
ld de, SurfMailWaveGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
jr FinishLoadingSurfLiteBlueMailGFX
2018-06-24 07:09:41 -07:00
LoadLiteBlueMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
2017-12-26 17:02:00 -08:00
ld de, LiteBlueMailBorderGFX
ld c, 8 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MailDratiniGFX
ld c, 6 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
ld de, PortraitMailUnderlineGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
2018-06-24 07:09:41 -07:00
FinishLoadingSurfLiteBlueMailGFX:
2017-12-26 17:02:00 -08:00
ld de, SurfLiteBlueMailSmallShapesGFX
ld c, 2 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld c, 2 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, SurfLiteBlueMailLargeShapesGFX
ld c, 8 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld c, 8 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
call DrawMailBorder
hlcoord 2, 15
ld a, $3f
call Mail_Draw16TileRow
ld a, $39
hlcoord 15, 14
call Mail_Draw3x2Graphic
ld a, $44
hlcoord 2, 2
call Mail_Draw2x2Graphic
hlcoord 15, 11
call Mail_Draw2x2Graphic
ld a, $4c
hlcoord 3, 12
call Mail_Draw2x2Graphic
hlcoord 15, 2
call Mail_Draw2x2Graphic
ld a, $50
hlcoord 6, 3
call Mail_Draw2x2Graphic
ld a, $40
hlcoord 13, 2
ld [hli], a
hlcoord 6, 14
ld [hl], a
ld a, $41
hlcoord 4, 5
ld [hli], a
hlcoord 17, 5
ld [hli], a
hlcoord 13, 12
ld [hl], a
ld a, $42
hlcoord 9, 2
ld [hli], a
hlcoord 14, 5
ld [hli], a
hlcoord 3, 10
ld [hl], a
ld a, $43
hlcoord 6, 11
ld [hli], a
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
LoadEonMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
2017-12-26 17:02:00 -08:00
ld de, EonMailBorder1GFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, EonMailBorder2GFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, EonMailBorder2GFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, EonMailBorder1GFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, SurfMailBorderGFX + 6 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MailEeveeGFX
ld c, 6 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $3d
2017-12-26 17:02:00 -08:00
ld de, MailLargeCircleGFX
ld c, 4 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, EonMailBorder2GFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld a, $31
hlcoord 0, 0
call Mail_Place18TileAlternatingRow
hlcoord 1, 17
call Mail_Place18TileAlternatingRow
ld a, $33
hlcoord 0, 1
call Mail_Place16TileAlternatingColumn
hlcoord 19, 0
call Mail_Place16TileAlternatingColumn
hlcoord 2, 15
ld a, $35
call Mail_Draw16TileRow
inc a
hlcoord 15, 14
call Mail_Draw3x2Graphic
call LovelyEonMail_PlaceIcons
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
LoadLovelyMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
2017-12-26 17:02:00 -08:00
ld de, LovelyMailBorderGFX
ld c, 5 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MailPoliwagGFX
ld c, 6 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
ld de, LovelyMailUnderlineGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, LovelyMailLargeHeartGFX
ld c, 4 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, LovelyMailSmallHeartGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
call DrawMailBorder2
hlcoord 2, 15
ld a, $3c
call Mail_Draw16TileRow
ld a, $36
hlcoord 15, 14
call Mail_Draw3x2Graphic
call LovelyEonMail_PlaceIcons
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
LovelyEonMail_PlaceIcons:
2017-12-26 17:02:00 -08:00
ld a, $3d
hlcoord 2, 2
call Mail_Draw2x2Graphic
hlcoord 16, 2
call Mail_Draw2x2Graphic
hlcoord 9, 4
call Mail_Draw2x2Graphic
hlcoord 2, 11
call Mail_Draw2x2Graphic
hlcoord 6, 12
call Mail_Draw2x2Graphic
hlcoord 12, 11
call Mail_Draw2x2Graphic
ld a, $41
hlcoord 5, 4
ld [hl], a
hlcoord 6, 2
ld [hl], a
hlcoord 12, 4
ld [hl], a
hlcoord 14, 2
ld [hl], a
hlcoord 3, 13
ld [hl], a
hlcoord 9, 11
ld [hl], a
hlcoord 16, 12
ld [hl], a
ret
2018-06-24 07:09:41 -07:00
LoadMorphMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
ld bc, 5 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call MailGFX_GenerateMonochromeTilesColor2
ld de, MorphMailBorderCornerGFX + 3 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MorphMailBorderCornerGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MorphMailBorderGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, EonMailBorder1GFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, MorphMailDividerGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MailDittoGFX
ld c, 6 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
call DrawMailBorder2
ld a, $31
hlcoord 1, 1
call Mail_Draw2x2Graphic
hlcoord 17, 15
call Mail_Draw2x2Graphic
hlcoord 1, 3
ld [hl], a
hlcoord 3, 1
ld [hl], a
hlcoord 16, 16
ld [hl], a
hlcoord 18, 14
ld [hl], a
ld a, $36
hlcoord 1, 4
ld [hl], a
hlcoord 2, 3
ld [hl], a
hlcoord 3, 2
ld [hl], a
hlcoord 4, 1
ld [hl], a
inc a
hlcoord 15, 16
ld [hl], a
hlcoord 16, 15
ld [hl], a
hlcoord 17, 14
ld [hl], a
hlcoord 18, 13
ld [hl], a
inc a
hlcoord 2, 15
ld b, $e
call Mail_DrawRowLoop
inc a
hlcoord 2, 11
call Mail_Draw16TileRow
hlcoord 2, 5
call Mail_Draw16TileRow
inc a
hlcoord 6, 1
call Mail_Draw13TileRow
hlcoord 1, 16
call Mail_Draw13TileRow
inc a
hlcoord 3, 13
call Mail_Draw3x2Graphic
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
LoadBlueSkyMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
2017-12-26 17:02:00 -08:00
ld de, EonMailBorder1GFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld a, $ff
ld bc, 1 tiles
call ByteFill
ld de, BlueSkyMailGrassGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
ld de, MailDragoniteAndSentretGFX
ld c, 23 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
ld de, MailCloudGFX
ld c, 6 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, FlowerMailBorderGFX + 6 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, MailCloudGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, MailCloudGFX + 2 * LEN_1BPP_TILE
ld c, 2 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, MailCloudGFX + 5 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld a, $31
hlcoord 0, 0
call Mail_DrawFullWidthBorder
hlcoord 0, 1
call Mail_DrawLeftRightBorder
hlcoord 19, 1
call Mail_DrawLeftRightBorder
inc a
hlcoord 0, 17
call Mail_DrawFullWidthBorder
inc a
hlcoord 0, 16
call Mail_DrawFullWidthBorder
inc a
hlcoord 2, 2
call Mail_Place6TileRow
hlcoord 3, 3
call Mail_Place6TileRow
hlcoord 4, 4
call Mail_Place6TileRow
dec hl
ld [hl], $7f
dec a
hlcoord 15, 14
call Mail_Draw2x2Graphic
add $4
hlcoord 15, 16
ld [hli], a
inc a
ld [hl], a
inc a
push af
hlcoord 12, 1
call Mail_Draw3x2Graphic
pop af
hlcoord 15, 4
call Mail_Draw3x2Graphic
inc a
hlcoord 2, 11
call Mail_Draw16TileRow
inc a
hlcoord 10, 3
call Mail_Draw2x2Graphic
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
Mail_Place6TileRow:
2017-12-26 17:02:00 -08:00
ld b, $6
.loop
ld [hli], a
inc a
dec b
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
LoadFlowerMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
2017-12-26 17:02:00 -08:00
ld de, FlowerMailBorderGFX
ld c, 8 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, MailOddishGFX
ld c, 4 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
ld de, FlowerMailBorderGFX + 6 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, FlowerMailFlowerGFX
ld c, 4 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld c, 4 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
call DrawMailBorder
hlcoord 2, 15
ld a, $3d ; underline
call Mail_Draw16TileRow
ld a, $39 ; oddish
hlcoord 16, 13
call Mail_Draw2x2Graphic
hlcoord 2, 13
call Mail_Draw2x2Graphic
ld a, $3e
hlcoord 2, 2
call Mail_Draw2x2Graphic
hlcoord 5, 3
call Mail_Draw2x2Graphic
hlcoord 10, 2
call Mail_Draw2x2Graphic
hlcoord 16, 3
call Mail_Draw2x2Graphic
hlcoord 5, 11
call Mail_Draw2x2Graphic
hlcoord 16, 10
call Mail_Draw2x2Graphic
ld a, $42
hlcoord 3, 4
call Mail_Draw2x2Graphic
hlcoord 12, 3
call Mail_Draw2x2Graphic
hlcoord 14, 2
call Mail_Draw2x2Graphic
hlcoord 2, 10
call Mail_Draw2x2Graphic
hlcoord 14, 11
call Mail_Draw2x2Graphic
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
LoadPortraitMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
2017-12-26 17:02:00 -08:00
ld de, PortraitMailBorderGFX
ld c, 5 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, PortraitMailUnderlineGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $3d
2017-12-26 17:02:00 -08:00
ld de, PortraitMailLargePokeballGFX
ld c, 4 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, PortraitMailSmallPokeballGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
call DrawMailBorder2
hlcoord 8, 15
ld a, $36
ld b, $a
call Mail_DrawRowLoop
call LovelyEonMail_PlaceIcons
ld a, $1
2018-01-23 14:39:09 -08:00
ld [wUnownLetter], a
2017-12-26 17:02:00 -08:00
hlcoord 1, 10
call PrepMonFrontpic
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
LoadMusicMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
2017-12-26 17:02:00 -08:00
ld de, MusicMailBorderGFX
ld c, 4 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MorphMailBorderGFX
ld c, 2 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MailNatuGFX
ld c, 6 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color3
xor a
ld bc, 1 tiles
call ByteFill
ld de, MusicMailLargeNoteGFX
ld c, 3 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, MusicMailSmallNoteGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld a, $31
hlcoord 0, 0
call Mail_Place18TileAlternatingRow
hlcoord 1, 17
call Mail_Place18TileAlternatingRow
ld a, $33
hlcoord 0, 1
call Mail_Place16TileAlternatingColumn
hlcoord 19, 0
call Mail_Place16TileAlternatingColumn
ld a, $35
hlcoord 2, 15
call Mail_Place14TileAlternatingRow
ld a, $37
hlcoord 15, 14
call Mail_Draw3x2Graphic
call LovelyEonMail_PlaceIcons
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
LoadMirageMailGFX:
2017-12-26 17:02:00 -08:00
push bc
2017-12-28 04:32:33 -08:00
ld hl, vTiles2 tile $31
ld bc, 5 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call MailGFX_GenerateMonochromeTilesColor2
ld de, BlueSkyMailGrassGFX
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, MailMewGFX
ld c, 18 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color2
ld de, LiteBlueMailBorderGFX + 1 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
ld de, LiteBlueMailBorderGFX + 6 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
2017-12-26 17:02:00 -08:00
call LoadMailGFX_Color1
call DrawMailBorder2
ld a, $36
hlcoord 1, 16
call Mail_DrawTopBottomBorder
inc a
hlcoord 15, 14
call Mail_Draw3x2Graphic
inc a
hlcoord 15, 16
ld [hli], a
inc a
ld [hl], a
ld a, $3f
hlcoord 1, 1
call Mail_Place18TileAlternatingRow
ld a, $41
hlcoord 0, 2
call Mail_Place14TileAlternatingColumn
ld a, $43
hlcoord 19, 2
call Mail_Place14TileAlternatingColumn
ld a, $45
hlcoord 0, 1
ld [hl], a
inc a
hlcoord 19, 1
ld [hl], a
inc a
hlcoord 0, 16
ld [hl], a
inc a
hlcoord 19, 16
ld [hl], a
inc a
hlcoord 2, 5
call Mail_Draw16TileRow
inc a
hlcoord 2, 11
call Mail_Draw16TileRow
pop hl
jp MailGFX_PlaceMessage
2018-06-24 07:09:41 -07:00
MailGFX_GenerateMonochromeTilesColor2:
2017-12-26 17:02:00 -08:00
.loop
xor a
ld [hli], a
ld a, $ff
ld [hli], a
dec bc
ld a, b
or c
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
MailGFX_PlaceMessage:
2017-12-26 17:02:00 -08:00
ld bc, MAIL_STRUCT_LENGTH
ld de, wTempMail
ld a, BANK(sPartyMail)
call OpenSRAM
2017-12-26 17:02:00 -08:00
call CopyBytes
call CloseSRAM
ld hl, wTempMailAuthor
ld de, wMonOrItemNameBuffer
ld bc, NAME_LENGTH - 1
call CopyBytes
ld a, "@"
ld [wTempMailAuthor], a
ld [wMonOrItemNameBuffer + NAME_LENGTH - 1], a
ld de, wTempMailMessage
hlcoord 2, 7
call PlaceString
ld de, wMonOrItemNameBuffer
ld a, [de]
and a
ret z
2020-11-03 16:53:07 -08:00
ld a, [wCurMailIndex]
2017-12-26 17:02:00 -08:00
hlcoord 8, 14
2020-11-03 16:53:07 -08:00
cp PORTRAITMAIL_INDEX
2017-12-26 17:02:00 -08:00
jr z, .place_author
hlcoord 6, 14
2020-11-03 16:53:07 -08:00
cp MORPH_MAIL_INDEX
2017-12-26 17:02:00 -08:00
jr z, .place_author
hlcoord 5, 14
.place_author
jp PlaceString
2020-10-05 17:10:01 -07:00
InvertBytes: ; unreferenced
; invert bc bytes starting at hl
2017-12-26 17:02:00 -08:00
.loop
ld a, [hl]
xor $ff
ld [hli], a
dec bc
ld a, b
or c
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
DrawMailBorder:
2017-12-26 17:02:00 -08:00
hlcoord 0, 0
ld a, $31
ld [hli], a
inc a
call Mail_DrawTopBottomBorder
inc a
ld [hli], a
inc a
call Mail_DrawLeftRightBorder
ld a, $36
ld [hli], a
inc a
call Mail_DrawTopBottomBorder
hlcoord 19, 1
ld a, $35
call Mail_DrawLeftRightBorder
ld a, $38
ld [hl], a
ret
2018-06-24 07:09:41 -07:00
DrawMailBorder2:
2017-12-26 17:02:00 -08:00
hlcoord 0, 0
ld a, $31
ld [hli], a
inc a
call Mail_DrawTopBottomBorder
ld [hl], $31
inc hl
inc a
call Mail_DrawLeftRightBorder
ld [hl], $31
inc hl
inc a
call Mail_DrawTopBottomBorder
hlcoord 19, 1
ld a, $35
call Mail_DrawLeftRightBorder
ld [hl], $31
ret
2018-06-24 07:09:41 -07:00
Mail_Place14TileAlternatingRow:
2017-12-26 17:02:00 -08:00
push af
ld b, 14 / 2
jr Mail_PlaceAlternatingRow
Mail_Place16TileAlternatingRow: ; unreferenced
2017-12-26 17:02:00 -08:00
push af
ld b, 16 / 2
jr Mail_PlaceAlternatingRow
2018-06-24 07:09:41 -07:00
Mail_Place18TileAlternatingRow:
2017-12-26 17:02:00 -08:00
push af
ld b, 18 / 2
; fallthrough
2017-12-26 17:02:00 -08:00
2018-06-24 07:09:41 -07:00
Mail_PlaceAlternatingRow:
2017-12-26 17:02:00 -08:00
.loop
ld [hli], a
inc a
ld [hli], a
dec a
dec b
jr nz, .loop
ld [hl], a
pop af
ret
2018-06-24 07:09:41 -07:00
Mail_Place14TileAlternatingColumn:
2017-12-26 17:02:00 -08:00
push af
ld b, 14 / 2
jr Mail_PlaceAlternatingColumn
2018-06-24 07:09:41 -07:00
Mail_Place16TileAlternatingColumn:
2017-12-26 17:02:00 -08:00
push af
ld b, 16 / 2
2018-06-24 07:09:41 -07:00
Mail_PlaceAlternatingColumn:
2017-12-26 17:02:00 -08:00
.loop
ld [hl], a
ld de, SCREEN_WIDTH
add hl, de
inc a
ld [hl], a
add hl, de
dec a
dec b
jr nz, .loop
ld [hl], a
pop af
ret
Mail_Draw7TileRow: ; unreferenced
ld b, 7
2017-12-26 17:02:00 -08:00
jr Mail_DrawRowLoop
2018-06-24 07:09:41 -07:00
Mail_Draw13TileRow:
ld b, 13
2017-12-26 17:02:00 -08:00
jr Mail_DrawRowLoop
2018-06-24 07:09:41 -07:00
Mail_Draw16TileRow:
ld b, 16
2017-12-26 17:02:00 -08:00
jr Mail_DrawRowLoop
2018-06-24 07:09:41 -07:00
Mail_DrawTopBottomBorder:
2017-12-26 17:02:00 -08:00
ld b, SCREEN_WIDTH - 2
jr Mail_DrawRowLoop
2018-06-24 07:09:41 -07:00
Mail_DrawFullWidthBorder:
2017-12-26 17:02:00 -08:00
ld b, SCREEN_WIDTH
; fallthrough
2017-12-26 17:02:00 -08:00
2018-06-24 07:09:41 -07:00
Mail_DrawRowLoop:
2017-12-26 17:02:00 -08:00
.loop
ld [hli], a
dec b
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
Mail_DrawLeftRightBorder:
2017-12-26 17:02:00 -08:00
ld b, SCREEN_HEIGHT - 2
ld de, SCREEN_WIDTH
.loop
ld [hl], a
add hl, de
dec b
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
Mail_Draw2x2Graphic:
2017-12-26 17:02:00 -08:00
push af
ld [hli], a
inc a
ld [hl], a
ld bc, SCREEN_WIDTH - 1
add hl, bc
inc a
ld [hli], a
inc a
ld [hl], a
pop af
ret
2018-06-24 07:09:41 -07:00
Mail_Draw3x2Graphic:
2017-12-26 17:02:00 -08:00
ld [hli], a
inc a
ld [hli], a
inc a
ld [hl], a
ld bc, SCREEN_WIDTH - 2
add hl, bc
inc a
ld [hli], a
inc a
ld [hli], a
inc a
ld [hl], a
ret
2018-06-24 07:09:41 -07:00
LoadMailGFX_Color1:
2017-12-26 17:02:00 -08:00
.loop
ld a, [de]
inc de
ld [hli], a
xor a
ld [hli], a
dec c
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
LoadMailGFX_Color2:
2017-12-26 17:02:00 -08:00
.loop
xor a
ld [hli], a
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
LoadMailGFX_Color3:
2017-12-26 17:02:00 -08:00
.loop
ld a, [de]
inc de
ld [hli], a
ld [hli], a
dec c
jr nz, .loop
ret
INCLUDE "gfx/mail.asm"
2018-06-24 07:09:41 -07:00
ItemIsMail:
2017-12-26 17:02:00 -08:00
ld a, d
ld hl, MailItems
ld de, 1
jp IsInArray
INCLUDE "data/items/mail_items.asm"