ref: def3b6049387a6d2afab66780f7f09dbb61d6166
dir: /engine/mail_2.asm/
ReadPartyMonMail: ; b9229 ld a, [CurPartyMon] ld hl, sPartyMail ld bc, MAIL_STRUCT_LENGTH call AddNTimes ld d, h ld e, l ReadAnyMail: ; b9237 push de call ClearBGPalettes call ClearSprites call ClearTileMap call DisableLCD call LoadFontsExtra pop de push de ld a, BANK(sPartyMail) call GetSRAMBank 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 ld hl, vTiles1 lb bc, BANK(StandardEnglishFont), $80 call Get1bpp pop de call .LoadGFX call EnableLCD call WaitBGMap ld a, [Buffer3] ld e, a farcall LoadMailPalettes call SetPalettes xor a ld [hJoyPressed], a call .loop call ClearBGPalettes call DisableLCD call LoadStandardFont jp EnableLCD .loop call GetJoypad ld a, [hJoyPressed] and A_BUTTON | B_BUTTON | START jr z, .loop and START jr nz, .pressed_start ret .pressed_start ld a, [wJumptableIndex] push af callfar PrintMail ; printer pop af ld [wJumptableIndex], a jr .loop ; b92b8 .LoadGFX: ; b92b8 ld h, d ld l, e push hl ld a, $0 call GetSRAMBank ld de, sPartyMon1MailAuthorID - sPartyMon1Mail add hl, de ld a, [hli] ld [Buffer1], a ld a, [hli] ld [Buffer2], a ld a, [hli] ld [CurPartySpecies], a ld b, [hl] 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 ld [Buffer3], a ld a, [hli] ld h, [hl] ld l, a ld de, .done pop bc push de jp hl .done ret ; b92f8 MailGFXPointers: ; b92f8 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 db -1 ; b9317 LoadSurfMailGFX: ; b9317 push bc ld hl, vTiles2 tile $31 ld de, SurfMailBorderGFX ld c, 8 * 8 call LoadMailGFX_Color2 ld de, MailLaprasGFX ld c, 6 * 8 call LoadMailGFX_Color3 ld de, SurfMailWaveGFX ld c, 1 * 8 call LoadMailGFX_Color2 jr FinishLoadingSurfLiteBlueMailGFX LoadLiteBlueMailGFX: ; b9335 push bc ld hl, vTiles2 tile $31 ld de, LiteBlueMailBorderGFX ld c, 8 * 8 call LoadMailGFX_Color2 ld de, MailDratiniGFX ld c, 6 * 8 call LoadMailGFX_Color3 ld de, PortraitMailUnderlineGFX ld c, 1 * 8 call LoadMailGFX_Color2 FinishLoadingSurfLiteBlueMailGFX: ; b9351 ld de, SurfLiteBlueMailSmallShapesGFX ld c, 2 * 8 call LoadMailGFX_Color2 ld c, 2 * 8 call LoadMailGFX_Color1 ld de, SurfLiteBlueMailLargeShapesGFX ld c, 8 * 8 call LoadMailGFX_Color1 ld c, 8 * 8 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 ; b93d2 LoadEonMailGFX: ; b93d2 push bc ld hl, vTiles2 tile $31 ld de, EonMailBorder1GFX ld c, 1 * 8 call LoadMailGFX_Color2 ld de, EonMailBorder2GFX ld c, 1 * 8 call LoadMailGFX_Color1 ld de, EonMailBorder2GFX ld c, 1 * 8 call LoadMailGFX_Color1 ld de, EonMailBorder1GFX ld c, 1 * 8 call LoadMailGFX_Color2 ld de, SurfMailBorderGFX + 6 * 8 ld c, 1 * 8 call LoadMailGFX_Color2 ld de, MailEeveeGFX ld c, 6 * 8 call LoadMailGFX_Color3 ld hl, vTiles2 tile $3d ld de, MailLargeCircleGFX ld c, 4 * 8 call LoadMailGFX_Color1 ld de, EonMailBorder2GFX ld c, 1 * 8 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 ; b944b LoadLovelyMailGFX: ; b944b push bc ld hl, vTiles2 tile $31 ld de, LovelyMailBorderGFX ld c, 5 * 8 call LoadMailGFX_Color2 ld de, MailPoliwagGFX ld c, 6 * 8 call LoadMailGFX_Color3 ld de, LovelyMailUnderlineGFX ld c, 1 * 8 call LoadMailGFX_Color2 ld de, LovelyMailLargeHeartGFX ld c, 4 * 8 call LoadMailGFX_Color2 ld de, LovelyMailSmallHeartGFX ld c, 1 * 8 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 ; b9491 LovelyEonMail_PlaceIcons: ; b9491 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 ; b94d6 LoadMorphMailGFX: ; b94d6 push bc ld hl, vTiles2 tile $31 ld bc, 5 * 8 call MailGFX_GenerateMonochromeTilesColor2 ld de, MorphMailBorderCornerGFX + 3 * 8 ld c, 1 * 8 call LoadMailGFX_Color2 ld de, MorphMailBorderCornerGFX ld c, 1 * 8 call LoadMailGFX_Color2 ld de, MorphMailBorderGFX ld c, 1 * 8 call LoadMailGFX_Color2 ld de, EonMailBorder1GFX ld c, 1 * 8 call LoadMailGFX_Color1 ld de, MorphMailDividerGFX ld c, 1 * 8 call LoadMailGFX_Color2 ld de, MailDittoGFX ld c, 6 * 8 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 ; b9582 LoadBlueSkyMailGFX: ; b9582 push bc ld hl, vTiles2 tile $31 ld de, EonMailBorder1GFX ld c, 1 * 8 call LoadMailGFX_Color2 ld a, $ff ld bc, 1 tiles call ByteFill ld de, BlueSkyMailGrassGFX ld c, 1 * 8 call LoadMailGFX_Color3 ld de, MailDragoniteGFX ld c, 23 * 8 call LoadMailGFX_Color3 ld de, MailCloudGFX ld c, 6 * 8 call LoadMailGFX_Color1 ld de, FlowerMailBorderGFX + 6 * 8 ld c, 1 * 8 call LoadMailGFX_Color1 ld de, MailCloudGFX ld c, 1 * 8 call LoadMailGFX_Color1 ld de, MailCloudGFX + 2 * 8 ld c, 2 * 8 call LoadMailGFX_Color1 ld de, MailCloudGFX + 5 * 8 ld c, 1 * 8 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 ; b9636 Mail_Place6TileRow: ; b9636 ld b, $6 .loop ld [hli], a inc a dec b jr nz, .loop ret ; b963e LoadFlowerMailGFX: ; b963e push bc ld hl, vTiles2 tile $31 ld de, FlowerMailBorderGFX ld c, 8 * 8 call LoadMailGFX_Color1 ld de, MailOddishGFX ld c, 4 * 8 call LoadMailGFX_Color3 ld de, FlowerMailBorderGFX + 6 * 8 ld c, 1 * 8 call LoadMailGFX_Color2 ld de, FlowerMailFlowerGFX ld c, 4 * 8 call LoadMailGFX_Color1 ld c, 4 * 8 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 ; b96ca LoadPortraitMailGFX: ; b96ca push bc ld hl, vTiles2 tile $31 ld de, PortraitMailBorderGFX ld c, 5 * 8 call LoadMailGFX_Color2 ld de, PortraitMailUnderlineGFX ld c, 1 * 8 call LoadMailGFX_Color2 ld hl, vTiles2 tile $3d ld de, PortraitMailLargePokeballGFX ld c, 4 * 8 call LoadMailGFX_Color1 ld de, PortraitMailSmallPokeballGFX ld c, 1 * 8 call LoadMailGFX_Color2 call DrawMailBorder2 hlcoord 8, 15 ld a, $36 ld b, $a call Mail_DrawRowLoop call LovelyEonMail_PlaceIcons ld a, $1 ld [UnownLetter], a hlcoord 1, 10 call PrepMonFrontpic pop hl jp MailGFX_PlaceMessage ; b9710 LoadMusicMailGFX: ; b9710 push bc ld hl, vTiles2 tile $31 ld de, MusicMailBorderGFX ld c, 4 * 8 call LoadMailGFX_Color2 ld de, MorphMailBorderGFX ld c, 2 * 8 call LoadMailGFX_Color2 ld de, MailNatuGFX ld c, 6 * 8 call LoadMailGFX_Color3 xor a ld bc, 1 tiles call ByteFill ld de, MusicMailLargeNoteGFX ld c, 3 * 8 call LoadMailGFX_Color1 ld de, MusicMailSmallNoteGFX ld c, 1 * 8 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 ; b9776 LoadMirageMailGFX: ; b9776 push bc ld hl, vTiles2 tile $31 ld bc, 5 * 8 call MailGFX_GenerateMonochromeTilesColor2 ld de, BlueSkyMailGrassGFX ld c, 1 * 8 call LoadMailGFX_Color2 ld de, MailMewGFX ld c, 18 * 8 call LoadMailGFX_Color2 ld de, LiteBlueMailBorderGFX + 1 * 8 ld c, 1 * 8 call LoadMailGFX_Color1 ld de, LiteBlueMailBorderGFX + 6 * 8 ld c, 1 * 8 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 ; b97f8 MailGFX_GenerateMonochromeTilesColor2: ; b97f8 .loop xor a ld [hli], a ld a, $ff ld [hli], a dec bc ld a, b or c jr nz, .loop ret ; b9803 MailGFX_PlaceMessage: ; b9803 ld bc, MAIL_STRUCT_LENGTH ld de, wTempMail ld a, BANK(sPartyMail) call GetSRAMBank 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 ld a, [Buffer3] hlcoord 8, 14 cp $3 ; PORTRAITMAIL jr z, .place_author hlcoord 6, 14 cp $6 ; MORPH_MAIL jr z, .place_author hlcoord 5, 14 .place_author jp PlaceString ; b984e Functionb984e: ; b984e ; XXX .loop ld a, [hl] xor $ff ld [hli], a dec bc ld a, b or c jr nz, .loop ret ; b9858 DrawMailBorder: ; b9858 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 ; b987b DrawMailBorder2: ; b987b 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 ; b989e Mail_Place14TileAlternatingRow: ; b989e push af ld b, 14 / 2 jr Mail_PlaceAlternatingRow Mail_Place16TileAlternatingRow: ; b98a3 push af ld b, 16 / 2 jr Mail_PlaceAlternatingRow Mail_Place18TileAlternatingRow: ; b98a8 push af ld b, 18 / 2 Mail_PlaceAlternatingRow: ; b98ab .loop ld [hli], a inc a ld [hli], a dec a dec b jr nz, .loop ld [hl], a pop af ret ; b98b5 Mail_Place14TileAlternatingColumn: ; b98b5 push af ld b, 14 / 2 jr Mail_PlaceAlternatingColumn Mail_Place16TileAlternatingColumn: ; b98ba push af ld b, 16 / 2 Mail_PlaceAlternatingColumn: ; b98bd .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 ; b98cc Mail_Draw7TileRow: ; b98cc ld b, $7 jr Mail_DrawRowLoop Mail_Draw13TileRow: ; b98d0 ld b, $d jr Mail_DrawRowLoop Mail_Draw16TileRow: ; b98d4 ld b, $10 jr Mail_DrawRowLoop Mail_DrawTopBottomBorder: ; b98d8 ld b, SCREEN_WIDTH - 2 jr Mail_DrawRowLoop Mail_DrawFullWidthBorder: ; b98dc ld b, SCREEN_WIDTH Mail_DrawRowLoop: ; b98de .loop ld [hli], a dec b jr nz, .loop ret ; b98e3 Mail_DrawLeftRightBorder: ; b98e3 ld b, SCREEN_HEIGHT - 2 ld de, SCREEN_WIDTH .loop ld [hl], a add hl, de dec b jr nz, .loop ret ; b98ee Mail_Draw2x2Graphic: ; b98ee 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 ; b98fc Mail_Draw3x2Graphic: ; b98fc 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 ; b990c LoadMailGFX_Color1: ; b990c .loop ld a, [de] inc de ld [hli], a xor a ld [hli], a dec c jr nz, .loop ret ; b9915 LoadMailGFX_Color2: ; b9915 .loop xor a ld [hli], a ld a, [de] inc de ld [hli], a dec c jr nz, .loop ret ; b991e LoadMailGFX_Color3: ; b991e .loop ld a, [de] inc de ld [hli], a ld [hli], a dec c jr nz, .loop ret ; b9926 INCLUDE "gfx/mail.asm" ItemIsMail: ; b9e76 ld a, d ld hl, MailItems ld de, 1 jp IsInArray ; b9e80 INCLUDE "data/items/mail_items.asm"