NamingScreen_: call DisableSpriteUpdates call NamingScreen call ReturnToMapWithSpeechTextbox ret NamingScreen: ld hl, wNamingScreenDestinationPointer ld [hl], e inc hl ld [hl], d ld hl, wNamingScreenType ld [hl], b ld hl, wOptions ld a, [hl] push af set NO_TEXT_SCROLL, [hl] ldh a, [hMapAnims] push af xor a ldh [hMapAnims], a ldh a, [hInMenu] push af ld a, $1 ldh [hInMenu], a call Function11ae4 call DelayFrame .asm_11ad1 call Function11cd4 jr nc, .asm_11ad1 pop af ldh [hInMenu], a pop af ldh [hMapAnims], a pop af ld [wOptions], a call ClearJoypad ret Function11ae4: call ClearBGPalettes ld b, $8 call GetSGBLayout call DisableLCD call Function1201e call Function11c67 ld a, $e3 ldh [rLCDC], a call Function11b09 call WaitBGMap call WaitTop call SetPalettes call Function11fad ret Function11b09: ld a, [wNamingScreenType] and $7 ld e, a ld d, $0 ld hl, .Jumptable add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp hl .Jumptable dw Function11b2a dw Function11b79 dw Function11b97 dw Function11bb8 dw Function11bda dw Function11b2a dw Function11b2a dw Function11b2a Function11b2a: ld a, [wCurPartySpecies] ld [wd151], a ld hl, LoadMenuMonIcon ld a, BANK(LoadMenuMonIcon) ld e, $1 rst FarCall ld a, [wCurPartySpecies] ld [wd151], a call GetPokemonName hlcoord 5, 2 call PlaceString ld l, c ld h, b ld de, .Strings call PlaceString inc de hlcoord 5, 4 call PlaceString farcall GetGender jr c, .asm_11b68 ld a, "♂" jr nz, .place_gender ld a, "♀" .place_gender hlcoord 1, 2 ld [hl], a .asm_11b68 call Function11c3a ret .Strings: db "'S@" db "NICKNAME?@" Function11b79: ld de, ChrisSpriteGFX call Function11c11 hlcoord 5, 2 ld de, .String call PlaceString call Function11c41 ret .String: db "YOUR NAME?@" Function11b97: ld de, SilverSpriteGFX call Function11c11 hlcoord 5, 2 ld de, .String call PlaceString call Function11c41 ret .String: db "RIVAL'S NAME?@" Function11bb8: ld de, MomSpriteGFX call Function11c11 hlcoord 5, 2 ld de, .String call PlaceString call Function11c41 ret .String: db "MOTHER'S NAME?@" Function11bda: ld de, $7380 ld hl, $8000 lb bc, $31, 4 call Request2bpp xor a ld hl, wSpriteAnimDict ld [hli], a ld [hl], a lb de, $24, $20 ld a, $1c call InitSpriteAnimStruct ld hl, $1 add hl, bc ld [hl], $0 hlcoord 5, 2 ld de, .String call PlaceString call Function11c48 ret .String: db "BOX NAME?@" Function11c11: push de ld hl, $8000 lb bc, BANK(ChrisSpriteGFX), 4 call Request2bpp pop de ld hl, $c0 add hl, de ld e, l ld d, h ld hl, $8040 lb bc, BANK(ChrisSpriteGFX), 4 call Request2bpp xor a ld hl, wSpriteAnimDict ld [hli], a ld [hl], a lb de, $24, $20 ld a, $1c call InitSpriteAnimStruct ret Function11c3a: ld a, $a hlcoord 5, 6 jr asm_11c4f Function11c41: ld a, $7 hlcoord 5, 6 jr asm_11c4f Function11c48: ld a, $8 hlcoord 5, 4 jr asm_11c4f asm_11c4f: ld [wNamingScreenMaxNameLength], a ld a, l ld [wNamingScreenStringEntryCoord], a ld a, h ld [wNamingScreenStringEntryCoord + 1], a ret Function11c5b: push bc push af ld a, [wNamingScreenType] sub $3 ld b, a pop af dec b pop bc ret Function11c67: call WaitTop hlcoord 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, $60 call ByteFill hlcoord 1, 1 lb bc, $6, $12 call Function11c5b jr nz, .asm_11c83 lb bc, $4, $12 .asm_11c83 call ClearBox ld de, NameInputUpper Function11c89: call Function11c5b jr nz, .asm_11c94 ld hl, $55 add hl, de ld d, h ld e, l .asm_11c94 push de hlcoord 1, 8 lb bc, $7, $12 call Function11c5b jr nz, .asm_11ca6 hlcoord 1, 6 lb bc, $9, $12 .asm_11ca6 call ClearBox hlcoord 1, 16 lb bc, $1, $12 call ClearBox pop de hlcoord 2, 8 ld b, $5 call Function11c5b jr nz, .asm_11cc2 hlcoord 2, 6 ld b, $6 .asm_11cc2 ld c, $11 .asm_11cc4 ld a, [de] ld [hli], a inc de dec c jr nz, .asm_11cc4 push de ld de, $17 add hl, de pop de dec b jr nz, .asm_11cc2 ret Function11cd4: call JoyTextDelay ld a, [wce63] bit 7, a jr nz, .asm_11cef call Function11d27 farcall PlaySpriteAnimationsAndDelayFrame call Function11cff call DelayFrame and a ret .asm_11cef callfar ClearSpriteAnims call ClearSprites xor a ldh [hSCX], a ldh [hSCY], a scf ret Function11cff: xor a ldh [hBGMapMode], a hlcoord 1, 5 call Function11c5b jr nz, .asm_11d0d hlcoord 1, 3 .asm_11d0d ld bc, $112 call ClearBox ld hl, wNamingScreenDestinationPointer ld e, [hl] inc hl ld d, [hl] ld hl, wNamingScreenStringEntryCoord ld a, [hli] ld h, [hl] ld l, a call PlaceString ld a, $1 ldh [hBGMapMode], a ret Function11d27: ld a, [wce63] ld e, a ld d, $0 ld hl, $5d36 add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp hl .Jumptable: dw Function11d3a dw Function11d60 Function11d3a: lb de, $50, $18 call Function11c5b jr nz, .asm_11d44 ld d, $40 .asm_11d44 ld a, $14 call InitSpriteAnimStruct ld a, c ld [wNamingScreenCursorObjectPointer], a ld a, b ld [wNamingScreenCursorObjectPointer + 1], a ld hl, $1 add hl, bc ld a, [hl] ld hl, $e add hl, bc ld [hl], a ld hl, wce63 inc [hl] ret Function11d60: ld hl, hJoyPressed ld a, [hl] and $1 jr nz, .asm_11d78 ld a, [hl] and $2 jr nz, .asm_11da6 ld a, [hl] and $8 jr nz, .asm_11d8e ld a, [hl] and $4 jr nz, .asm_11db3 ret .asm_11d78 call Function11dca cp $1 jr z, .asm_11db3 cp $2 jr z, .asm_11da6 cp $3 jr z, .asm_11daa call Function11fde call Function11ed3 ret nc .asm_11d8e ld hl, wNamingScreenCursorObjectPointer ld c, [hl] inc hl ld b, [hl] ld hl, $c add hl, bc ld [hl], $8 ld hl, $d add hl, bc ld [hl], $4 call Function11c5b ret nz inc [hl] ret .asm_11da6 call Function11f89 ret .asm_11daa call Function11fc4 ld hl, wce63 set 7, [hl] ret .asm_11db3 ld hl, wce64 ld a, [hl] xor $1 ld [hl], a jr z, .asm_11dc3 ld de, $60b4 call Function11c89 ret .asm_11dc3 ld de, $616f call Function11c89 ret Function11dca: ld hl, wNamingScreenCursorObjectPointer ld c, [hl] inc hl ld b, [hl] Function11dd0: ld hl, $d add hl, bc ld a, [hl] push bc ld b, $4 call Function11c5b jr nz, .asm_11dde inc b .asm_11dde cp b pop bc jr nz, .asm_11df8 ld hl, $c add hl, bc ld a, [hl] cp $3 jr c, .asm_11df2 cp $6 jr c, .asm_11df5 ld a, $3 ret .asm_11df2 ld a, $1 ret .asm_11df5 ld a, $2 ret .asm_11df8 xor a ret Function11dfa: call Function11e4a ld hl, $d add hl, bc ld a, [hl] ld e, a swap e ld hl, $7 add hl, bc ld [hl], e ld d, $4 call Function11c5b jr nz, .asm_11e12 inc d .asm_11e12 cp d ld de, .LetterEntries ld a, $0 jr nz, .asm_11e1f ld de, .CaseDelEnd ld a, $1 .asm_11e1f 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 .LetterEntries: db $00, $10, $20, $30, $40, $50, $60, $70, $80 .CaseDelEnd: db $00, $00, $00, $30, $30, $30, $60, $60, $60 Function11e4a: ld hl, hJoyLast ld a, [hl] and $40 jr nz, .asm_11ec1 ld a, [hl] and $80 jr nz, .asm_11ea8 ld a, [hl] and $20 jr nz, .asm_11e84 ld a, [hl] and $10 jr nz, .asm_11e62 ret .asm_11e62 call Function11dd0 and a jr nz, .asm_11e76 ld hl, $c add hl, bc .asm_11e6c ld a, [hl] cp $8 jr nc, .asm_11e73 inc [hl] ret .asm_11e73 ld [hl], $0 ret .asm_11e76 cp $3 jr nz, .asm_11e7b xor a .asm_11e7b ld e, a add a add e ld hl, $c add hl, bc ld [hl], a ret .asm_11e84 call Function11dd0 and a jr nz, .asm_11e97 ld hl, $c add hl, bc ld a, [hl] and a jr z, .asm_11e94 dec [hl] ret .asm_11e94 ld [hl], $8 ret .asm_11e97 cp $1 jr nz, .asm_11e9d ld a, $4 .asm_11e9d dec a dec a ld e, a add a add e ld hl, $c add hl, bc ld [hl], a ret .asm_11ea8 ld hl, $d add hl, bc ld a, [hl] call Function11c5b jr nz, .asm_11eb8 cp $5 jr nc, .asm_11ebe inc [hl] ret .asm_11eb8 cp $4 jr nc, .asm_11ebe inc [hl] ret .asm_11ebe ld [hl], $0 ret .asm_11ec1 ld hl, $d add hl, bc ld a, [hl] and a jr z, .asm_11ecb dec [hl] ret .asm_11ecb ld [hl], $4 call Function11c5b ret nz inc [hl] ret Function11ed3: ld a, [wNamingScreenLastCharacter] ld hl, Dakutens cp $e5 jr z, asm_11f06 ld hl, Handakutens cp $e4 jr z, asm_11f06 Function11ee4: ld a, [wNamingScreenMaxNameLength] ld c, a ld a, [wNamingScreenCurNameLength] cp c ret nc ld a, [wNamingScreenLastCharacter] asm_11ef0: call Function11f9d ld [hl], a asm_11ef4: ld hl, wNamingScreenCurNameLength inc [hl] call Function11f9d ld a, [hl] cp $50 jr z, .asm_11f04 ld [hl], $f2 and a ret .asm_11f04 scf ret asm_11f06: ld a, [wNamingScreenCurNameLength] and a ret z push hl ld hl, wNamingScreenCurNameLength dec [hl] call Function11f9d ld c, [hl] pop hl .asm_11f15 ld a, [hli] cp $ff jr z, asm_11ef4 cp c jr z, .asm_11f20 inc hl jr .asm_11f15 .asm_11f20 ld a, [hl] jr asm_11ef0 INCLUDE "data/text/dakutens.asm" Function11f89: ld hl, wNamingScreenCurNameLength ld a, [hl] and a ret z dec [hl] call Function11f9d ld [hl], $f2 inc hl ld a, [hl] cp $f2 ret nz ld [hl], $eb ret Function11f9d: push af ld hl, wNamingScreenDestinationPointer ld a, [hli] ld h, [hl] ld l, a ld a, [wNamingScreenCurNameLength] ld e, a ld d, $0 add hl, de pop af ret Function11fad: ld hl, wNamingScreenDestinationPointer ld a, [hli] ld h, [hl] ld l, a ld [hl], $f2 inc hl ld a, [wNamingScreenMaxNameLength] dec a ld c, a ld a, $eb .asm_11fbd ld [hli], a dec c jr nz, .asm_11fbd ld [hl], $50 ret Function11fc4: ld hl, wNamingScreenDestinationPointer ld a, [hli] ld h, [hl] ld l, a ld a, [wNamingScreenMaxNameLength] ld c, a .asm_11fce ld a, [hl] cp $eb jr z, .asm_11fd7 cp $f2 jr nz, .asm_11fd9 .asm_11fd7 ld [hl], $50 .asm_11fd9 inc hl dec c jr nz, .asm_11fce ret Function11fde: ld hl, wNamingScreenCursorObjectPointer ld c, [hl] inc hl ld b, [hl] ld hl, $6 add hl, bc ld a, [hl] ld hl, $4 add hl, bc add [hl] sub $8 srl a srl a srl a ld e, a ld hl, $7 add hl, bc ld a, [hl] ld hl, $5 add hl, bc add [hl] sub $10 srl a srl a srl a ld d, a hlcoord 0, 0 ld bc, $14 .asm_12010 ld a, d and a jr z, .asm_12018 add hl, bc dec d jr .asm_12010 .asm_12018 add hl, de ld a, [hl] ld [wNamingScreenLastCharacter], a ret Function1201e: call ClearSprites callfar ClearSpriteAnims call LoadStandardFont call LoadFontsExtra ld de, NamingScreenGFX_MiddleLine ld hl, $8eb0 lb bc, BANK(NamingScreenGFX_MiddleLine), 1 call Get1bpp ld de, NamingScreenGFX_UnderLine ld hl, $8f20 lb bc, BANK(NamingScreenGFX_UnderLine), 1 call Get1bpp ld de, $9600 ld hl, NamingScreenGFX_Border ld bc, $10 ld a, BANK(NamingScreenGFX_Border) call FarCopyBytes ld de, $87e0 ld hl, NamingScreenGFX_Cursor ld bc, $20 ld a, BANK(NamingScreenGFX_Cursor) call FarCopyBytes ld a, $5 ld hl, wSpriteAnimDict + 9 * 2 ld [hli], a ld [hl], $7e xor a ldh [hSCY], a ld [wGlobalAnimYOffset], a ldh [hSCX], a ld [wGlobalAnimXOffset], a ld [wce63], a ld [wce64], a ldh [hBGMapMode], a ld [wNamingScreenCurNameLength], a ld a, $7 ldh [hWX], a ret NamingScreenGFX_Border: INCBIN "gfx/naming_screen/border.2bpp" NamingScreenGFX_Cursor: INCBIN "gfx/naming_screen/cursor.2bpp" INCLUDE "data/text/name_input_chars.asm" NamingScreenGFX_ED: INCBIN "gfx/naming_screen/end.1bpp" ; leftover from gen 1 NamingScreenGFX_MiddleLine: INCBIN "gfx/naming_screen/middle_line.1bpp" NamingScreenGFX_UnderLine: INCBIN "gfx/naming_screen/underline.1bpp" _ComposeMailMessage: ld hl, wNamingScreenDestinationPointer ld [hl], e inc hl ld [hl], d ldh a, [hMapAnims] push af xor a ldh [hMapAnims], a ldh a, [hInMenu] push af ld a, $1 ldh [hInMenu], a call Function12267 call DelayFrame .asm_1225b call Function1238d jr nc, .asm_1225b pop af ldh [hInMenu], a pop af ldh [hMapAnims], a ret Function12267: call ClearBGPalettes call DisableLCD call Function1201e ld de, $8000 ld hl, MailIcon ld bc, $80 ld a, BANK(MailIcon) call FarCopyBytes xor a ld hl, wSpriteAnimDict ld [hli], a ld [hl], a lb de, $18, $10 ld a, $0 call InitSpriteAnimStruct ld hl, $2 add hl, bc ld [hl], $0 call Function12351 ld a, $e3 ldh [rLCDC], a call Function12341 ld b, $8 call GetSGBLayout call WaitBGMap call WaitTop ld a, $e4 call DmgToCgbBGPals ld a, $e4 call DmgToCgbObjPal0 call Function11fad ld hl, wNamingScreenDestinationPointer ld e, [hl] inc hl ld d, [hl] ld hl, $10 add hl, de ld [hl], $4e ret MailIcon: INCBIN "gfx/icons/mail_big.2bpp" Function12341: ld a, $21 ld [wNamingScreenMaxNameLength], a ret db "メールを かいてね@" Function12351: call WaitTop hlcoord 0, 0 ld bc, $78 ld a, $60 call ByteFill hlcoord 0, 6 ld bc, $f0 ld a, $7f call ByteFill hlcoord 1, 1 ld bc, IncGradGBPalTable_13 call ClearBox ld de, MailEntry_Uppercase Function12376: hlcoord 1, 7 ld b, $6 .asm_1237b ld c, $13 .asm_1237d ld a, [de] ld [hli], a inc de dec c jr nz, .asm_1237d push de ld de, $15 add hl, de pop de dec b jr nz, .asm_1237b ret Function1238d: call JoyTextDelay ld a, [wce63] bit 7, a jr nz, .asm_123a8 call Function123d5 farcall PlaySpriteAnimationsAndDelayFrame call Function123b8 call DelayFrame and a ret .asm_123a8 callfar ClearSpriteAnims call ClearSprites xor a ldh [hSCX], a ldh [hSCY], a scf ret Function123b8: xor a ldh [hBGMapMode], a hlcoord 1, 1 lb bc, 4, 18 call ClearBox ld hl, wNamingScreenDestinationPointer ld e, [hl] inc hl ld d, [hl] hlcoord 2, 2 call PlaceString ld a, $1 ldh [hBGMapMode], a ret Function123d5: ld a, [wce63] ld e, a ld d, $0 ld hl, .Jumptable add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp hl .Jumptable: dw Function123e8 dw Function12407 Function123e8: lb de, $48, $10 ld a, $1b call InitSpriteAnimStruct ld a, c ld [wNamingScreenCursorObjectPointer], a ld a, b ld [wNamingScreenCursorObjectPointer + 1], a ld hl, $1 add hl, bc ld a, [hl] ld hl, $e add hl, bc ld [hl], a ld hl, wce63 inc [hl] ret Function12407: ld hl, hJoyPressed ld a, [hl] and $1 jr nz, .asm_1241f ld a, [hl] and $2 jr nz, .asm_1245a ld a, [hl] and $8 jr nz, .asm_12447 ld a, [hl] and $4 jr nz, .asm_12477 ret .asm_1241f call Function12552 cp $1 jr z, .asm_12477 cp $2 jr z, .asm_1245a cp $3 jr z, .asm_1246e call Function11fde call Function12579 jr c, .asm_12447 ld hl, wNamingScreenCurNameLength ld a, [hl] cp $10 ret nz inc [hl] call Function11f9d ld [hl], $f2 dec hl ld [hl], $4e ret .asm_12447 ld hl, wNamingScreenCursorObjectPointer 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 .asm_1245a call Function11f89 ld hl, wNamingScreenCurNameLength ld a, [hl] cp $10 ret nz dec [hl] call Function11f9d ld [hl], $f2 inc hl ld [hl], $4e ret .asm_1246e call Function11fc4 ld hl, wce63 set 7, [hl] ret .asm_12477 ld hl, wce64 ld a, [hl] xor $1 ld [hl], a jr nz, .asm_12487 ld de, MailEntry_Uppercase call Function12376 ret .asm_12487 ld de, MailEntry_Lowercase call Function12376 ret Function1248e: call Function124d9 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, .LetterEntries ld a, $0 jr nz, .asm_124ac ld de, .CaseDelEnd ld a, $1 .asm_124ac 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 .LetterEntries: db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90 .CaseDelEnd: db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60 Function124d9: ld hl, hJoyLast ld a, [hl] and $40 jr nz, .asm_12545 ld a, [hl] and $80 jr nz, .asm_12537 ld a, [hl] and $20 jr nz, .asm_12513 ld a, [hl] and $10 jr nz, .asm_124f1 ret .asm_124f1 call Function12558 and a jr nz, .asm_12505 ld hl, $c .asm_124f9 add hl, bc ld a, [hl] cp $9 jr nc, .asm_12502 inc [hl] ret .asm_12502 ld [hl], $0 .asm_12504 ret .asm_12505 cp $3 jr nz, .asm_1250a xor a .asm_1250a ld e, a add a add e ld hl, $c add hl, bc ld [hl], a ret .asm_12513 call Function12558 and a jr nz, .asm_12526 ld hl, $c add hl, bc ld a, [hl] and a jr z, .asm_12523 dec [hl] ret .asm_12523 ld [hl], $9 ret .asm_12526 cp $1 jr nz, .asm_1252c ld a, $4 .asm_1252c dec a dec a ld e, a add a add e ld hl, $c add hl, bc ld [hl], a .asm_12536 ret .asm_12537 ld hl, $d add hl, bc ld a, [hl] cp $5 jr nc, .asm_12542 inc [hl] ret .asm_12542 ld [hl], $0 ret .asm_12545 ld hl, $d add hl, bc ld a, [hl] and a jr z, .asm_1254f dec [hl] ret .asm_1254f ld [hl], $5 ret Function12552: ld hl, wNamingScreenCursorObjectPointer ld c, [hl] inc hl ld b, [hl] Function12558: ld hl, $d add hl, bc ld a, [hl] cp $5 jr nz, .asm_12577 ld hl, $c add hl, bc ld a, [hl] cp $3 jr c, .asm_12571 cp $6 jr c, .asm_12574 ld a, $3 ret .asm_12571 ld a, $1 ret .asm_12574 ld a, $2 ret .asm_12577 xor a ret Function12579: ld a, [wNamingScreenLastCharacter] ld hl, $5f23 cp $e5 jr z, .asm_1258b ld hl, $5f74 cp $e4 jp nz, Function11ee4 .asm_1258b ld a, [wNamingScreenCurNameLength] and a ret z cp $11 jr nz, .asm_1259c push hl ld hl, wNamingScreenCurNameLength dec [hl] dec [hl] jr .asm_125a1 .asm_1259c push hl ld hl, wNamingScreenCurNameLength dec [hl] .asm_125a1 call Function11f9d ld c, [hl] pop hl .asm_125a6 ld a, [hli] cp $ff jp z, asm_11ef4 cp c jr z, .asm_125b2 inc hl jr .asm_125a6 .asm_125b2 ld a, [hl] jp asm_11ef0 INCLUDE "data/text/mail_input_chars.asm"