ref: 8b429e2a545e87407a3b8c7b92f7ceafc455e390
dir: /mobile/fixed_words.asm/
; These functions seem to be related to the selection of preset phrases ; for use in mobile communications. Annoyingly, they separate the ; Battle Tower function above from the data it references. Function11c05d: ld a, e or d jr z, .error ld a, e and d cp $ff jr z, .error push hl call CopyMobileEZChatToC608 pop hl call PlaceString and a ret .error ld c, l ld b, h scf ret Function11c075: push de ld a, c call Function11c254 pop de ld bc, wcd36 call Function11c08f ret Function11c082: ; unreferenced push de ld a, c call Function11c254 pop de ld bc, wcd36 call PrintEZChatBattleMessage ret Function11c08f: ld l, e ld h, d push hl ld a, 3 .loop push af ld a, [bc] ld e, a inc bc ld a, [bc] ld d, a inc bc push bc call Function11c05d jr c, .okay inc bc .okay ld l, c ld h, b pop bc pop af dec a jr nz, .loop pop hl ld de, 2 * SCREEN_WIDTH add hl, de ld a, $3 .loop2 push af ld a, [bc] ld e, a inc bc ld a, [bc] ld d, a inc bc push bc call Function11c05d jr c, .okay2 inc bc .okay2 ld l, c ld h, b pop bc pop af dec a jr nz, .loop2 ret PrintEZChatBattleMessage: ; Use up to 6 words from bc to print text starting at de. ; Preserve [wJumptableIndex], [wcf64] ld a, [wJumptableIndex] ld l, a ld a, [wcf64] ld h, a push hl ; reset value at [wc618] (not preserved) ld hl, wc618 ld a, $0 ld [hli], a ; preserve de push de ; [wJumptableIndex] keeps track of which line we're on (0, 1, or 2) ; [wcf64] keeps track of how much room we have left in the current line xor a ld [wJumptableIndex], a ld a, 18 ld [wcf64], a ld a, 6 .loop push af ; load the 2-byte word data pointed to by bc ld a, [bc] ld e, a inc bc ld a, [bc] ld d, a inc bc ; if $0000, we're done or e jr z, .done ; preserving hl and bc, get the length of the word push hl push bc call CopyMobileEZChatToC608 call GetLengthOfWordAtC608 ld e, c pop bc pop hl ; if the functions return 0, we're done ld a, e or a jr z, .done .loop2 ; e contains the length of the word ; add 1 for the space, unless we're at the start of the line ld a, [wcf64] cp 18 jr z, .skip_inc inc e .skip_inc ; if the word fits, put it on the same line cp e jr nc, .same_line ; otherwise, go to the next line ld a, [wJumptableIndex] inc a ld [wJumptableIndex], a ; if we're on line 2, insert "<NEXT>" ld [hl], "<NEXT>" rra jr c, .got_line_terminator ; else, insert "<CONT>" ld [hl], "<CONT>" .got_line_terminator inc hl ; init the next line, holding on to the same word ld a, 18 ld [wcf64], a dec e jr .loop2 .same_line ; add the space, unless we're at the start of the line cp 18 jr z, .skip_space ld [hl], " " inc hl .skip_space ; deduct the length of the word sub e ld [wcf64], a ld de, wc608 .place_string_loop ; load the string from de to hl ld a, [de] cp "@" jr z, .done inc de ld [hli], a jr .place_string_loop .done ; next word? pop af dec a jr nz, .loop ; we're finished, place "<DONE>" ld [hl], "<DONE>" ; now, let's place the string from wc618 to bc pop bc ld hl, wc618 call PlaceHLTextAtBC ; restore the original values of [wJumptableIndex] and [wcf64] pop hl ld a, l ld [wJumptableIndex], a ld a, h ld [wcf64], a ret GetLengthOfWordAtC608: ld c, $0 ld hl, wc608 .loop ld a, [hli] cp "@" ret z inc c jr .loop CopyMobileEZChatToC608: ldh a, [rSVBK] push af ld a, $1 ldh [rSVBK], a ld a, "@" ld hl, wc608 ld bc, NAME_LENGTH call ByteFill ld a, d and a jr z, .get_name ld hl, MobileEZChatCategoryPointers dec d sla d ld c, d ld b, $0 add hl, bc ld a, [hli] ld c, a ld a, [hl] ld b, a push bc pop hl ld c, e ld b, $0 sla c rl b sla c rl b sla c rl b add hl, bc ld bc, NAME_LENGTH_JAPANESE - 1 .copy_string ld de, wc608 call CopyBytes ld de, wc608 pop af ldh [rSVBK], a ret .get_name ld a, e ld [wNamedObjectIndex], a call GetPokemonName ld hl, wStringBuffer1 ld bc, MON_NAME_LENGTH - 1 jr .copy_string Function11c1ab: ldh a, [hInMenu] push af ld a, $1 ldh [hInMenu], a call Function11c1b9 pop af ldh [hInMenu], a ret Function11c1b9: call .InitKanaMode ldh a, [rSVBK] push af ld a, $5 ldh [rSVBK], a call EZChat_MasterLoop pop af ldh [rSVBK], a ret .InitKanaMode: xor a ld [wJumptableIndex], a ld [wcf64], a ld [wcf65], a ld [wcf66], a ld [wcd23], a ld [wcd20], a ld [wcd21], a ld [wcd22], a ld [wcd35], a ld [wcd2b], a ld a, $ff ld [wcd24], a ld a, [wMenuCursorY] dec a call Function11c254 call ClearBGPalettes call ClearSprites call ClearScreen call Function11d323 call SetPalettes call DisableLCD ld hl, SelectStartGFX ld de, vTiles2 ld bc, $60 call CopyBytes ld hl, EZChatSlowpokeLZ ld de, vTiles0 call Decompress call EnableLCD farcall ReloadMapPart farcall ClearSpriteAnims farcall LoadPokemonData farcall Pokedex_ABCMode ldh a, [rSVBK] push af ld a, $5 ldh [rSVBK], a ld hl, wc6d0 ld de, wLYOverrides ld bc, $100 call CopyBytes pop af ldh [rSVBK], a call EZChat_GetCategoryWordsByKana call EZChat_GetSeenPokemonByKana ret Function11c254: push af ld a, BANK(s4_a007) call OpenSRAM ld hl, s4_a007 pop af sla a sla a ld c, a sla a add c ld c, a ld b, 0 add hl, bc ld de, wcd36 ld bc, 12 call CopyBytes call CloseSRAM ret EZChat_ClearBottom12Rows: ld a, " " hlcoord 0, 6 ld bc, (SCREEN_HEIGHT - 6) * SCREEN_WIDTH call ByteFill ret EZChat_MasterLoop: .loop call JoyTextDelay ldh a, [hJoyPressed] ldh [hJoypadPressed], a ld a, [wJumptableIndex] bit 7, a jr nz, .exit call .DoJumptableFunction farcall PlaySpriteAnimations farcall ReloadMapPart jr .loop .exit farcall ClearSpriteAnims call ClearSprites ret .DoJumptableFunction: jumptable .Jumptable, wJumptableIndex .Jumptable: dw .SpawnObjects ; 00 dw .InitRAM ; 01 dw Function11c35f ; 02 dw Function11c373 ; 03 dw Function11c3c2 ; 04 dw Function11c3ed ; 05 dw Function11c52c ; 06 dw Function11c53d ; 07 dw Function11c658 ; 08 dw Function11c675 ; 09 dw Function11c9bd ; 0a dw Function11c9c3 ; 0b dw Function11caad ; 0c dw Function11cab3 ; 0d dw Function11cb52 ; 0e dw Function11cb66 ; 0f dw Function11cbf5 ; 10 dw Function11ccef ; 11 dw Function11cd04 ; 12 dw Function11cd20 ; 13 dw Function11cd54 ; 14 dw Function11ce0b ; 15 dw Function11ce2b ; 16 .SpawnObjects: depixel 3, 1, 2, 5 ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR call InitSpriteAnimStruct depixel 8, 1, 2, 5 ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_VAR1 add hl, bc ld a, $1 ld [hl], a depixel 9, 2, 2, 0 ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_VAR1 add hl, bc ld a, $3 ld [hl], a depixel 10, 16 ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_VAR1 add hl, bc ld a, $4 ld [hl], a depixel 10, 4 ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_VAR1 add hl, bc ld a, $5 ld [hl], a depixel 10, 2 ld a, SPRITE_ANIM_INDEX_EZCHAT_CURSOR call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_VAR1 add hl, bc ld a, $2 ld [hl], a ld hl, wcd23 set 1, [hl] set 2, [hl] jp Function11cfb5 .InitRAM: ld a, $9 ld [wcd2d], a ld a, $2 ld [wcd2e], a ld [wcd2f], a ld [wcd30], a ld de, wcd2d call Function11cfce jp Function11cfb5 Function11c35f: ld hl, wcd2f inc [hl] inc [hl] dec hl dec hl dec [hl] push af ld de, wcd2d call Function11cfce pop af ret nz jp Function11cfb5 Function11c373: ld hl, wcd30 inc [hl] inc [hl] dec hl dec hl dec [hl] push af ld de, wcd2d call Function11cfce pop af ret nz call Function11c38a jp Function11cfb5 Function11c38a: ld hl, Unknown_11c986 ld bc, wcd36 ld a, $6 .asm_11c392 push af ld a, [hli] ld e, a ld a, [hli] ld d, a push hl push de pop hl ld a, [bc] inc bc ld e, a ld a, [bc] inc bc ld d, a push bc or e jr z, .asm_11c3af ld a, e and d cp $ff jr z, .asm_11c3af call Function11c05d jr .asm_11c3b5 .asm_11c3af ld de, String_11c3bc call PlaceString .asm_11c3b5 pop bc pop hl pop af dec a jr nz, .asm_11c392 ret String_11c3bc: db "ーーーーー@" Function11c3c2: call EZChat_ClearBottom12Rows ld de, Unknown_11cfbe call Function11d035 hlcoord 1, 7 ld de, String_11c4db call PlaceString hlcoord 1, 16 ld de, String_11c51b call PlaceString call Function11c4be ld hl, wcd23 set 0, [hl] ld hl, wcd24 res 0, [hl] call Function11cfb5 Function11c3ed: ld hl, wcd20 ld de, hJoypadPressed ld a, [de] and $8 jr nz, .asm_11c426 ld a, [de] and $2 jr nz, .asm_11c41a ld a, [de] and $1 jr nz, .asm_11c42c ld de, hJoyLast ld a, [de] and $40 jr nz, .asm_11c47c ld a, [de] and $80 jr nz, .asm_11c484 ld a, [de] and $20 jr nz, .asm_11c48c ld a, [de] and $10 jr nz, .asm_11c498 ret .asm_11c41a call PlayClickSFX .asm_11c41d ld hl, wcd24 set 0, [hl] ld a, $c jr .asm_11c475 .asm_11c426 ld a, $8 ld [wcd20], a ret .asm_11c42c ld a, [wcd20] cp $6 jr c, .asm_11c472 sub $6 jr z, .asm_11c469 dec a jr z, .asm_11c41d ld hl, wcd36 ld c, $c xor a .asm_11c440 or [hl] inc hl dec c jr nz, .asm_11c440 and a jr z, .asm_11c460 ld de, Unknown_11cfba call Function11cfce decoord 1, 2 ld bc, wcd36 call Function11c08f ld hl, wcd24 set 0, [hl] ld a, $e jr .asm_11c475 .asm_11c460 ld hl, wcd24 set 0, [hl] ld a, $11 jr .asm_11c475 .asm_11c469 ld hl, wcd24 set 0, [hl] ld a, $a jr .asm_11c475 .asm_11c472 call Function11c4a5 .asm_11c475 ld [wJumptableIndex], a call PlayClickSFX ret .asm_11c47c ld a, [hl] cp $3 ret c sub $3 jr .asm_11c4a3 .asm_11c484 ld a, [hl] cp $6 ret nc add $3 jr .asm_11c4a3 .asm_11c48c ld a, [hl] and a ret z cp $3 ret z cp $6 ret z dec a jr .asm_11c4a3 .asm_11c498 ld a, [hl] cp $2 ret z cp $5 ret z cp $8 ret z inc a .asm_11c4a3 ld [hl], a ret Function11c4a5: ld hl, wcd23 res 0, [hl] ld a, [wcd2b] and a jr nz, .asm_11c4b7 xor a ld [wcd21], a ld a, $6 ret .asm_11c4b7 xor a ld [wcd22], a ld a, $15 ret Function11c4be: ld a, $1 hlcoord 0, 6, wAttrmap ld bc, $a0 call ByteFill ld a, $7 hlcoord 0, 14, wAttrmap ld bc, $28 call ByteFill farcall ReloadMapPart ret String_11c4db: db "6つのことば¯くみあわせます" next "かえたいところ¯えらぶと でてくる" next "ことばのグループから いれかえたい" next "たんご¯えらんでください" db "@" String_11c51b: db "ぜんぶけす やめる けってい@" Function11c52c: call EZChat_ClearBottom12Rows call EZChat_PlaceCategoryNames call Function11c618 ld hl, wcd24 res 1, [hl] call Function11cfb5 Function11c53d: ld hl, wcd21 ld de, hJoypadPressed ld a, [de] and START jr nz, .start ld a, [de] and SELECT jr nz, .select ld a, [de] and B_BUTTON jr nz, .b ld a, [de] and A_BUTTON jr nz, .a ld de, hJoyLast ld a, [de] and D_UP jr nz, .up ld a, [de] and D_DOWN jr nz, .down ld a, [de] and D_LEFT jr nz, .left ld a, [de] and D_RIGHT jr nz, .right ret .a ld a, [wcd21] cp 15 jr c, .got_category sub $f jr z, .done dec a jr z, .mode jr .b .start ld hl, wcd24 set 0, [hl] ld a, $8 ld [wcd20], a .b ld a, $4 jr .go_to_function .select ld a, [wcd2b] xor $1 ld [wcd2b], a ld a, $15 jr .go_to_function .mode ld a, $13 jr .go_to_function .got_category ld a, $8 .go_to_function ld hl, wcd24 set 1, [hl] ld [wJumptableIndex], a call PlayClickSFX ret .done ld a, [wcd20] call Function11ca6a call PlayClickSFX ret .up ld a, [hl] cp $3 ret c sub $3 jr .finish_dpad .down ld a, [hl] cp $f ret nc add $3 jr .finish_dpad .left ld a, [hl] and a ret z cp $3 ret z cp $6 ret z cp $9 ret z cp $c ret z cp $f ret z dec a jr .finish_dpad .right ld a, [hl] cp $2 ret z cp $5 ret z cp $8 ret z cp $b ret z cp $e ret z cp $11 ret z inc a .finish_dpad ld [hl], a ret EZChat_PlaceCategoryNames: ld de, MobileEZChatCategoryNames ld bc, Coords_11c63a ld a, 15 .loop push af ld a, [bc] inc bc ld l, a ld a, [bc] inc bc ld h, a push bc call PlaceString ; The category names are padded with "@". ; To find the next category, the system must ; find the first character at de that is not "@". .find_next_string_loop inc de ld a, [de] cp "@" jr z, .find_next_string_loop pop bc pop af dec a jr nz, .loop hlcoord 1, 17 ld de, EZChatString_Stop_Mode_Cancel call PlaceString ret Function11c618: ld a, $2 hlcoord 0, 6, wAttrmap ld bc, $c8 call ByteFill farcall ReloadMapPart ret EZChatString_Stop_Mode_Cancel: db "けす モード やめる@" Coords_11c63a: dwcoord 1, 7 dwcoord 7, 7 dwcoord 13, 7 dwcoord 1, 9 dwcoord 7, 9 dwcoord 13, 9 dwcoord 1, 11 dwcoord 7, 11 dwcoord 13, 11 dwcoord 1, 13 dwcoord 7, 13 dwcoord 13, 13 dwcoord 1, 15 dwcoord 7, 15 dwcoord 13, 15 Function11c658: call EZChat_ClearBottom12Rows call Function11c770 ld de, Unknown_11cfc2 call Function11d035 call Function11c9ab call Function11c7bc call Function11c86e ld hl, wcd24 res 3, [hl] call Function11cfb5 Function11c675: ld hl, wMobileCommsJumptableIndex ld de, hJoypadPressed ld a, [de] and A_BUTTON jr nz, .a ld a, [de] and B_BUTTON jr nz, .b ld a, [de] and START jr nz, .start ld a, [de] and SELECT jr z, .select ld a, [wcd26] and a ret z sub $c jr nc, .asm_11c699 xor a .asm_11c699 ld [wcd26], a jr .asm_11c6c4 .start ld hl, wcd28 ld a, [wcd26] add $c cp [hl] ret nc ld [wcd26], a ld a, [hl] ld b, a ld hl, wMobileCommsJumptableIndex ld a, [wcd26] add [hl] jr c, .asm_11c6b9 cp b jr c, .asm_11c6c4 .asm_11c6b9 ld a, [wcd28] ld hl, wcd26 sub [hl] dec a ld [wMobileCommsJumptableIndex], a .asm_11c6c4 call Function11c992 call Function11c7bc call Function11c86e ret .select ld de, hJoyLast ld a, [de] and D_UP jr nz, .asm_11c708 ld a, [de] and D_DOWN jr nz, .asm_11c731 ld a, [de] and D_LEFT jr nz, .asm_11c746 ld a, [de] and D_RIGHT jr nz, .asm_11c755 ret .a call Function11c8f6 ld a, $4 ld [wcd35], a jr .asm_11c6fc .b ld a, [wcd2b] and a jr nz, .asm_11c6fa ld a, $6 jr .asm_11c6fc .asm_11c6fa ld a, $15 .asm_11c6fc ld [wJumptableIndex], a ld hl, wcd24 set 3, [hl] call PlayClickSFX ret .asm_11c708 ld a, [hl] cp $3 jr c, .asm_11c711 sub $3 jr .asm_11c76e .asm_11c711 ld a, [wcd26] sub $3 ret c ld [wcd26], a jr .asm_11c6c4 .asm_11c71c ld hl, wcd28 ld a, [wcd26] add $c ret c cp [hl] ret nc ld a, [wcd26] add $3 ld [wcd26], a jr .asm_11c6c4 .asm_11c731 ld a, [wcd28] ld b, a ld a, [wcd26] add [hl] add $3 cp b ret nc ld a, [hl] cp $9 jr nc, .asm_11c71c add $3 jr .asm_11c76e .asm_11c746 ld a, [hl] and a ret z cp $3 ret z cp $6 ret z cp $9 ret z dec a jr .asm_11c76e .asm_11c755 ld a, [wcd28] ld b, a ld a, [wcd26] add [hl] inc a cp b ret nc ld a, [hl] cp $2 ret z cp $5 ret z cp $8 ret z cp $b ret z inc a .asm_11c76e ld [hl], a ret Function11c770: xor a ld [wMobileCommsJumptableIndex], a ld [wcd26], a ld [wcd27], a ld a, [wcd2b] and a jr nz, .cd2b_is_nonzero ld a, [wcd21] and a jr z, .cd21_is_zero ; load from data array dec a sla a ld hl, MobileEZChatData_WordAndPageCounts ld c, a ld b, 0 add hl, bc ld a, [hli] ld [wcd28], a ld a, [hl] .load ld [wcd29], a ret .cd21_is_zero ; compute from [wc7d2] ld a, [wc7d2] ld [wcd28], a .div_12 ld c, 12 call SimpleDivide and a jr nz, .no_need_to_floor dec b .no_need_to_floor ld a, b jr .load .cd2b_is_nonzero ; compute from [wc6a8 + 2 * [wcd22]] ld hl, wc6a8 ld a, [wcd22] ld c, a ld b, 0 add hl, bc add hl, bc ld a, [hl] ld [wcd28], a jr .div_12 Function11c7bc: ld bc, Unknown_11c854 ld a, [wcd2b] and a jr nz, .asm_11c814 ld a, [wcd21] ld d, a and a jr z, .asm_11c7e9 ld a, [wcd26] ld e, a .asm_11c7d0 ld a, [bc] ld l, a inc bc ld a, [bc] ld h, a inc bc and l cp $ff ret z push bc push de call Function11c05d pop de pop bc inc e ld a, [wcd28] cp e jr nz, .asm_11c7d0 ret .asm_11c7e9 ld hl, wListPointer ld a, [wcd26] ld e, a add hl, de .asm_11c7f1 push de ld a, [hli] ld e, a ld d, 0 push hl ld a, [bc] ld l, a inc bc ld a, [bc] ld h, a inc bc and l cp $ff jr z, .asm_11c811 push bc call Function11c05d pop bc pop hl pop de inc e ld a, [wcd28] cp e jr nz, .asm_11c7f1 ret .asm_11c811 pop hl pop de ret .asm_11c814 ld hl, wc648 ld a, [wcd22] ld e, a ld d, 0 add hl, de add hl, de ld a, [hli] ld e, a ld a, [hl] ld d, a push de pop hl ld a, [wcd26] ld e, a ld d, 0 add hl, de add hl, de ld a, [wcd26] ld e, a .asm_11c831 push de ld a, [hli] ld e, a ld a, [hli] ld d, a push hl ld a, [bc] ld l, a inc bc ld a, [bc] ld h, a inc bc and l cp $ff jr z, .asm_11c851 push bc call Function11c05d pop bc pop hl pop de inc e ld a, [wcd28] cp e jr nz, .asm_11c831 ret .asm_11c851 pop hl pop de ret Unknown_11c854: dwcoord 2, 8 dwcoord 8, 8 dwcoord 14, 8 dwcoord 2, 10 dwcoord 8, 10 dwcoord 14, 10 dwcoord 2, 12 dwcoord 8, 12 dwcoord 14, 12 dwcoord 2, 14 dwcoord 8, 14 dwcoord 14, 14 dw -1 Function11c86e: ld a, [wcd26] and a jr z, .asm_11c88a hlcoord 2, 17 ld de, MobileString_Prev call PlaceString hlcoord 6, 17 ld c, $3 xor a .asm_11c883 ld [hli], a inc a dec c jr nz, .asm_11c883 jr .asm_11c895 .asm_11c88a hlcoord 2, 17 ld c, $7 ld a, $7f .asm_11c891 ld [hli], a dec c jr nz, .asm_11c891 .asm_11c895 ld hl, wcd28 ld a, [wcd26] add $c jr c, .asm_11c8b7 cp [hl] jr nc, .asm_11c8b7 hlcoord 16, 17 ld de, MobileString_Next call PlaceString hlcoord 11, 17 ld a, $3 ld c, a .asm_11c8b1 ld [hli], a inc a dec c jr nz, .asm_11c8b1 ret .asm_11c8b7 hlcoord 17, 16 ld a, $7f ld [hl], a hlcoord 11, 17 ld c, $7 .asm_11c8c2 ld [hli], a dec c jr nz, .asm_11c8c2 ret BCD2String: ; unreferenced inc a push af and $f ldh [hDividend], a pop af and $f0 swap a ldh [hDividend + 1], a xor a ldh [hDividend + 2], a push hl farcall Function11a80c pop hl ld a, [wcd63] add "0" ld [hli], a ld a, [wcd62] add "0" ld [hli], a ret MobileString_Page: ; unreferenced db "ぺージ@" MobileString_Prev: db "まえ@" MobileString_Next: db "つぎ@" Function11c8f6: ld a, [wcd20] call Function11c95d push hl ld a, [wcd2b] and a jr nz, .asm_11c938 ld a, [wcd21] ld d, a and a jr z, .asm_11c927 ld hl, wcd26 ld a, [wMobileCommsJumptableIndex] add [hl] .asm_11c911 ld e, a .asm_11c912 pop hl push de call Function11c05d pop de ld a, [wcd20] ld c, a ld b, 0 ld hl, wcd36 add hl, bc add hl, bc ld [hl], e inc hl ld [hl], d ret .asm_11c927 ld hl, wcd26 ld a, [wMobileCommsJumptableIndex] add [hl] ld c, a ld b, 0 ld hl, wListPointer add hl, bc ld a, [hl] jr .asm_11c911 .asm_11c938 ld hl, wc648 ld a, [wcd22] ld e, a ld d, 0 add hl, de add hl, de ld a, [hli] ld e, a ld a, [hl] ld d, a push de pop hl ld a, [wcd26] ld e, a ld d, 0 add hl, de add hl, de ld a, [wMobileCommsJumptableIndex] ld e, a add hl, de add hl, de ld a, [hli] ld e, a ld a, [hl] ld d, a jr .asm_11c912 Function11c95d: sla a ld c, a ld b, 0 ld hl, Unknown_11c986 add hl, bc ld a, [hli] ld c, a ld a, [hl] ld b, a push bc push bc pop hl ld a, $5 ld c, a ld a, $7f .asm_11c972 ld [hli], a dec c jr nz, .asm_11c972 dec hl ld bc, -20 add hl, bc ld a, $5 ld c, a ld a, $7f .asm_11c980 ld [hld], a dec c jr nz, .asm_11c980 pop hl ret Unknown_11c986: dwcoord 1, 2 dwcoord 7, 2 dwcoord 13, 2 dwcoord 1, 4 dwcoord 7, 4 dwcoord 13, 4 Function11c992: ld a, $8 hlcoord 2, 7 .asm_11c997 push af ld a, $7f push hl ld bc, $11 call ByteFill pop hl ld bc, $14 add hl, bc pop af dec a jr nz, .asm_11c997 ret Function11c9ab: ld a, $7 hlcoord 0, 6, wAttrmap ld bc, $c8 call ByteFill farcall ReloadMapPart ret Function11c9bd: ld de, String_11ca38 call Function11ca7f Function11c9c3: ld hl, wcd2a ld de, hJoypadPressed ld a, [de] and $1 jr nz, .asm_11c9de ld a, [de] and $2 jr nz, .asm_11c9e9 ld a, [de] and $40 jr nz, .asm_11c9f7 ld a, [de] and $80 jr nz, .asm_11c9fc ret .asm_11c9de ld a, [hl] and a jr nz, .asm_11c9e9 call Function11ca5e xor a ld [wcd20], a .asm_11c9e9 ld hl, wcd24 set 4, [hl] ld a, $4 ld [wJumptableIndex], a call PlayClickSFX ret .asm_11c9f7 ld a, [hl] and a ret z dec [hl] ret .asm_11c9fc ld a, [hl] and a ret nz inc [hl] ret Function11ca01: hlcoord 14, 7, wAttrmap ld de, $14 ld a, $5 ld c, a .asm_11ca0a push hl ld a, $6 ld b, a ld a, $7 .asm_11ca10 ld [hli], a dec b jr nz, .asm_11ca10 pop hl add hl, de dec c jr nz, .asm_11ca0a Function11ca19: hlcoord 0, 12, wAttrmap ld de, $14 ld a, $6 ld c, a .asm_11ca22 push hl ld a, $14 ld b, a ld a, $7 .asm_11ca28 ld [hli], a dec b jr nz, .asm_11ca28 pop hl add hl, de dec c jr nz, .asm_11ca22 farcall ReloadMapPart ret String_11ca38: db "とうろくちゅう<NO>あいさつ¯ぜんぶ" next "けしても よろしいですか?@" String_11ca57: db "はい" next "いいえ@" Function11ca5e: xor a .loop push af call Function11ca6a pop af inc a cp $6 jr nz, .loop ret Function11ca6a: ld hl, wcd36 ld c, a ld b, 0 add hl, bc add hl, bc ld [hl], b inc hl ld [hl], b call Function11c95d ld de, String_11c3bc call PlaceString ret Function11ca7f: push de ld de, Unknown_11cfc6 call Function11cfce ld de, Unknown_11cfca call Function11cfce hlcoord 1, 14 pop de call PlaceString hlcoord 16, 8 ld de, String_11ca57 call PlaceString call Function11ca01 ld a, $1 ld [wcd2a], a ld hl, wcd24 res 4, [hl] call Function11cfb5 ret Function11caad: ld de, String_11cb1c call Function11ca7f Function11cab3: ld hl, wcd2a ld de, hJoypadPressed ld a, [de] and $1 jr nz, .asm_11cace ld a, [de] and $2 jr nz, .asm_11caf9 ld a, [de] and $40 jr nz, .asm_11cb12 ld a, [de] and $80 jr nz, .asm_11cb17 ret .asm_11cace call PlayClickSFX ld a, [hl] and a jr nz, .asm_11cafc ld a, [wcd35] and a jr z, .asm_11caf3 cp $ff jr z, .asm_11caf3 ld a, $ff ld [wcd35], a hlcoord 1, 14 ld de, String_11cb31 call PlaceString ld a, $1 ld [wcd2a], a ret .asm_11caf3 ld hl, wJumptableIndex set 7, [hl] ret .asm_11caf9 call PlayClickSFX .asm_11cafc ld hl, wcd24 set 4, [hl] ld a, $4 ld [wJumptableIndex], a ld a, [wcd35] cp $ff ret nz ld a, $1 ld [wcd35], a ret .asm_11cb12 ld a, [hl] and a ret z dec [hl] ret .asm_11cb17 ld a, [hl] and a ret nz inc [hl] ret String_11cb1c: db "あいさつ<NO>とうろく¯ちゅうし" next "しますか?@" String_11cb31: db "とうろくちゅう<NO>あいさつ<WA>ほぞん" next "されません<GA>よろしい ですか?@" Function11cb52: ld hl, Unknown_11cc01 ld a, [wMenuCursorY] .asm_11cb58 dec a jr z, .asm_11cb5f inc hl inc hl jr .asm_11cb58 .asm_11cb5f ld a, [hli] ld e, a ld a, [hl] ld d, a call Function11ca7f Function11cb66: ld hl, wcd2a ld de, hJoypadPressed ld a, [de] and $1 jr nz, .asm_11cb81 ld a, [de] and $2 jr nz, .asm_11cbd7 ld a, [de] and $40 jr nz, .asm_11cbeb ld a, [de] and $80 jr nz, .asm_11cbf0 ret .asm_11cb81 ld a, [hl] and a jr nz, .asm_11cbd4 ld a, BANK(s4_a007) call OpenSRAM ld hl, s4_a007 ld a, [wMenuCursorY] dec a sla a sla a ld c, a sla a add c ld c, a ld b, 0 add hl, bc ld de, wcd36 ld c, 12 .asm_11cba2 ld a, [de] ld [hli], a inc de dec c jr nz, .asm_11cba2 call CloseSRAM call PlayClickSFX ld de, Unknown_11cfc6 call Function11cfce ld hl, Unknown_11cc7e ld a, [wMenuCursorY] .asm_11cbba dec a jr z, .asm_11cbc1 inc hl inc hl jr .asm_11cbba .asm_11cbc1 ld a, [hli] ld e, a ld a, [hl] ld d, a hlcoord 1, 14 call PlaceString ld hl, wJumptableIndex inc [hl] inc hl ld a, $10 ld [hl], a ret .asm_11cbd4 call PlayClickSFX .asm_11cbd7 ld de, Unknown_11cfba call Function11cfce call Function11c38a ld hl, wcd24 set 4, [hl] ld a, $4 ld [wJumptableIndex], a ret .asm_11cbeb ld a, [hl] and a ret z dec [hl] ret .asm_11cbf0 ld a, [hl] and a ret nz inc [hl] ret Function11cbf5: call WaitSFX ld hl, wcf64 dec [hl] ret nz dec hl set 7, [hl] ret Unknown_11cc01: dw String_11cc09 dw String_11cc23 dw String_11cc42 dw String_11cc60 String_11cc09: db "じこしょうかい は" next "この あいさつで いいですか?@" String_11cc23: db "たいせん <GA>はじまるとき は" next "この あいさつで いいですか?@" String_11cc42: db "たいせん <NI>かったとき は" next "この あいさつで いいですか?@" String_11cc60: db "たいせん <NI>まけたとき は" next "この あいさつで いいですか?@" Unknown_11cc7e: dw String_11cc86 dw String_11cc9d dw String_11ccb9 dw String_11ccd4 String_11cc86: db "じこしょうかい の" next "あいさつ¯とうろくした!@" String_11cc9d: db "たいせん <GA>はじまるとき の" next "あいさつ¯とうろくした!@" String_11ccb9: db "たいせん <NI>かったとき の" next "あいさつ¯とうろくした!@" String_11ccd4: db "たいせん <NI>まけたとき の" next "あいさつ¯とうろくした!@" Function11ccef: ld de, Unknown_11cfc6 call Function11cfce hlcoord 1, 14 ld de, String_11cd10 call PlaceString call Function11ca19 call Function11cfb5 Function11cd04: ld de, hJoypadPressed ld a, [de] and a ret z ld a, $4 ld [wJumptableIndex], a ret String_11cd10: db "なにか ことば¯いれてください@" Function11cd20: call EZChat_ClearBottom12Rows ld de, Unknown_11cfc6 call Function11cfce hlcoord 1, 14 ld a, [wcd2b] ld [wcd2c], a and a jr nz, .asm_11cd3a ld de, String_11cdc7 jr .asm_11cd3d .asm_11cd3a ld de, String_11cdd9 .asm_11cd3d call PlaceString hlcoord 4, 8 ld de, String_11cdf5 call PlaceString call Function11cdaa ld hl, wcd24 res 5, [hl] call Function11cfb5 Function11cd54: ld hl, wcd2c ld de, hJoypadPressed ld a, [de] and A_BUTTON jr nz, .asm_11cd6f ld a, [de] and B_BUTTON jr nz, .asm_11cd73 ld a, [de] and D_UP jr nz, .asm_11cd8b ld a, [de] and D_DOWN jr nz, .asm_11cd94 ret .asm_11cd6f ld a, [hl] ld [wcd2b], a .asm_11cd73 ld a, [wcd2b] and a jr nz, .asm_11cd7d ld a, $6 jr .asm_11cd7f .asm_11cd7d ld a, $15 .asm_11cd7f ld [wJumptableIndex], a ld hl, wcd24 set 5, [hl] call PlayClickSFX ret .asm_11cd8b ld a, [hl] and a ret z dec [hl] ld de, String_11cdc7 jr .asm_11cd9b .asm_11cd94 ld a, [hl] and a ret nz inc [hl] ld de, String_11cdd9 .asm_11cd9b push de ld de, Unknown_11cfc6 call Function11cfce pop de hlcoord 1, 14 call PlaceString ret Function11cdaa: ld a, $2 hlcoord 0, 6, wAttrmap ld bc, 6 * SCREEN_WIDTH call ByteFill ld a, $7 hlcoord 0, 12, wAttrmap ld bc, 4 * SCREEN_WIDTH call ByteFill farcall ReloadMapPart ret String_11cdc7: ; Words will be displayed by category db "ことば¯しゅるいべつに" next "えらべます@" String_11cdd9: ; Words will be displayed in alphabetical order db "ことば¯アイウエオ の" next "じゅんばんで ひょうじ します@" String_11cdf5: db "しゅるいべつ モード" ; Category mode next "アイウエオ モード@" ; ABC mode Function11ce0b: call EZChat_ClearBottom12Rows hlcoord 1, 7 ld de, String_11cf79 call PlaceString hlcoord 1, 17 ld de, EZChatString_Stop_Mode_Cancel call PlaceString call Function11c618 ld hl, wcd24 res 2, [hl] call Function11cfb5 Function11ce2b: ld a, [wcd22] sla a sla a ld c, a ld b, 0 ld hl, Unknown_11ceb9 add hl, bc ld de, hJoypadPressed ld a, [de] and START jr nz, .start ld a, [de] and SELECT jr nz, .select ld a, [de] and A_BUTTON jr nz, .a ld a, [de] and B_BUTTON jr nz, .b ld de, hJoyLast ld a, [de] and D_UP jr nz, .up ld a, [de] and D_DOWN jr nz, .down ld a, [de] and D_LEFT jr nz, .left ld a, [de] and D_RIGHT jr nz, .right ret .a ld a, [wcd22] cp NUM_KANA jr c, .place sub NUM_KANA jr z, .done dec a jr z, .mode jr .b .start ld hl, wcd24 set 0, [hl] ld a, $8 ld [wcd20], a .b ld a, $4 jr .load .select ld a, [wcd2b] xor $1 ld [wcd2b], a ld a, $6 jr .load .place ld a, $8 jr .load .mode ld a, $13 .load ld [wJumptableIndex], a ld hl, wcd24 set 2, [hl] call PlayClickSFX ret .done ld a, [wcd20] call Function11ca6a call PlayClickSFX ret .left inc hl .down inc hl .right inc hl .up ld a, [hl] cp $ff ret z ld [wcd22], a ret Unknown_11ceb9: ; up left down right db $ff, $01 db $05, $ff db $ff, $02 db $06, $00 db $ff, $03 db $07, $01 db $ff, $04 db $08, $02 db $ff, $14 db $09, $03 db $00, $06 db $0a, $ff db $01, $07 db $0b, $05 db $02, $08 db $0c, $06 db $03, $09 db $0d, $07 db $04, $19 db $0e, $08 db $05, $0b db $0f, $ff db $06, $0c db $10, $0a db $07, $0d db $11, $0b db $08, $0e db $12, $0c db $09, $1e db $13, $0d db $0a, $10 db $2d, $ff db $0b, $11 db $2d, $0f db $0c, $12 db $2d, $10 db $0d, $13 db $2d, $11 db $0e, $26 db $2d, $12 db $ff, $15 db $19, $04 db $ff, $16 db $1a, $14 db $ff, $17 db $1b, $15 db $ff, $18 db $1c, $16 db $ff, $23 db $1d, $17 db $14, $1a db $1e, $09 db $15, $1b db $1f, $19 db $16, $1c db $20, $1a db $17, $1d db $21, $1b db $18, $2b db $22, $1c db $19, $1f db $26, $0e db $1a, $20 db $27, $1e db $1b, $21 db $28, $1f db $1c, $22 db $29, $20 db $1d, $2c db $2a, $21 db $ff, $24 db $2b, $18 db $ff, $25 db $2b, $23 db $ff, $ff db $2b, $24 db $1e, $27 db $2e, $13 db $1f, $28 db $2e, $26 db $20, $29 db $2e, $27 db $21, $2a db $2e, $28 db $22, $ff db $2e, $29 db $23, $ff db $2c, $1d db $2b, $ff db $2f, $22 db $0f, $2e db $ff, $ff db $26, $2f db $ff, $2d db $2c, $ff db $ff, $2e String_11cf79: ; Hiragana table db "あいうえお なにぬねの や ゆ よ" next "かきくけこ はひふへほ わ" next "さしすせそ まみむめも そのた" next "たちつてと らりるれろ" db "@" Function11cfb5: ld hl, wJumptableIndex inc [hl] ret Unknown_11cfba: db 0, 0 ; start coords db 20, 6 ; end coords Unknown_11cfbe: db 0, 14 ; start coords db 20, 4 ; end coords Unknown_11cfc2: db 0, 6 ; start coords db 20, 10 ; end coords Unknown_11cfc6: db 0, 12 ; start coords db 20, 6 ; end coords Unknown_11cfca: db 14, 7 ; start coords db 6, 5 ; end coords Function11cfce: hlcoord 0, 0 ld bc, SCREEN_WIDTH ld a, [de] inc de push af ld a, [de] inc de and a .add_n_times jr z, .done_add_n_times add hl, bc dec a jr .add_n_times .done_add_n_times pop af ld c, a ld b, 0 add hl, bc push hl ld a, $79 ld [hli], a ld a, [de] inc de dec a dec a jr z, .skip_fill ld c, a ld a, $7a .fill_loop ld [hli], a dec c jr nz, .fill_loop .skip_fill ld a, $7b ld [hl], a pop hl ld bc, SCREEN_WIDTH add hl, bc ld a, [de] dec de dec a dec a jr z, .skip_section ld b, a .loop push hl ld a, $7c ld [hli], a ld a, [de] dec a dec a jr z, .skip_row ld c, a ld a, $7f .row_loop ld [hli], a dec c jr nz, .row_loop .skip_row ld a, $7c ld [hl], a pop hl push bc ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .loop .skip_section ld a, $7d ld [hli], a ld a, [de] dec a dec a jr z, .skip_remainder ld c, a ld a, $7a .final_loop ld [hli], a dec c jr nz, .final_loop .skip_remainder ld a, $7e ld [hl], a ret Function11d035: hlcoord 0, 0 ld bc, SCREEN_WIDTH ld a, [de] inc de push af ld a, [de] inc de and a .add_n_times jr z, .done_add_n_times add hl, bc dec a jr .add_n_times .done_add_n_times pop af ld c, a ld b, 0 add hl, bc push hl ld a, $79 ld [hl], a pop hl push hl ld a, [de] dec a inc de ld c, a add hl, bc ld a, $7b ld [hl], a call .AddNMinusOneTimes ld a, $7e ld [hl], a pop hl push hl call .AddNMinusOneTimes ld a, $7d ld [hl], a pop hl push hl inc hl push hl call .AddNMinusOneTimes pop bc dec de ld a, [de] cp $2 jr z, .skip dec a dec a .loop push af ld a, $7a ld [hli], a ld [bc], a inc bc pop af dec a jr nz, .loop .skip pop hl ld bc, $14 add hl, bc push hl ld a, [de] dec a ld c, a ld b, 0 add hl, bc pop bc inc de ld a, [de] cp $2 ret z push bc dec a dec a ld c, a ld b, a ld de, $14 .loop2 ld a, $7c ld [hl], a add hl, de dec c jr nz, .loop2 pop hl .loop3 ld a, $7c ld [hl], a add hl, de dec b jr nz, .loop3 ret .AddNMinusOneTimes: ld a, [de] dec a ld bc, SCREEN_WIDTH .add_n_minus_one_times add hl, bc dec a jr nz, .add_n_minus_one_times ret AnimateEZChatCursor: ld hl, SPRITEANIMSTRUCT_VAR1 add hl, bc jumptable .Jumptable, hl .Jumptable: dw .zero dw .one dw .two dw .three dw .four dw .five dw .six dw .seven dw .eight dw .nine dw .ten .zero ld a, [wcd20] sla a ld hl, .Coords_Zero ld e, $1 jr .load .one ld a, [wcd21] sla a ld hl, .Coords_One ld e, $2 jr .load .two ld hl, .FramesetsIDs_Two ld a, [wcd22] ld e, a ld d, 0 add hl, de ld a, [hl] call ReinitSpriteAnimFrame ld a, [wcd22] sla a ld hl, .Coords_Two ld e, $4 jr .load .three ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_2 call ReinitSpriteAnimFrame ld a, [wMobileCommsJumptableIndex] sla a ld hl, .Coords_Three ld e, $8 .load push de ld e, a ld d, 0 add hl, de push hl pop de ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [de] inc de ld [hli], a ld a, [de] ld [hl], a pop de ld a, e call .UpdateObjectFlags ret .four ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_2 call ReinitSpriteAnimFrame ld a, [wcd2a] sla a ld hl, .Coords_Four ld e, $10 jr .load .five ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_2 call ReinitSpriteAnimFrame ld a, [wcd2c] sla a ld hl, .Coords_Five ld e, $20 jr .load .six ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_5 call ReinitSpriteAnimFrame ; X = [wcd4a] * 8 + 24 ld a, [wcd4a] sla a sla a sla a add $18 ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hli], a ; Y = 48 ld a, $30 ld [hl], a ld a, $1 ld e, a call .UpdateObjectFlags ret .seven ld a, [wEZChatCursorYCoord] cp $4 jr z, .cursor0 ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 jr .got_frameset .cursor0 ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1 .got_frameset call ReinitSpriteAnimFrame ld a, [wEZChatCursorYCoord] cp $4 jr z, .asm_11d1b1 ; X = [wEZChatCursorXCoord] * 8 + 32 ld a, [wEZChatCursorXCoord] sla a sla a sla a add $20 ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hli], a ; Y = [wEZChatCursorYCoord] * 16 + 72 ld a, [wEZChatCursorYCoord] sla a sla a sla a sla a add $48 ld [hl], a ld a, $2 ld e, a call .UpdateObjectFlags ret .asm_11d1b1 ; X = [wEZChatCursorXCoord] * 40 + 24 ld a, [wEZChatCursorXCoord] sla a sla a sla a ld e, a sla a sla a add e add $18 ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hli], a ; Y = 138 ld a, $8a ld [hl], a ld a, $2 ld e, a call .UpdateObjectFlags ret .nine ld d, -13 * 8 ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_7 jr .eight_nine_load .eight ld d, 2 * 8 ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_6 .eight_nine_load push de call ReinitSpriteAnimFrame ld a, [wcd4a] sla a sla a sla a ld e, a sla a add e add 8 * 8 ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld [hld], a pop af ld [hl], a ld a, $4 ld e, a call .UpdateObjectFlags ret .ten ld a, SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1 call ReinitSpriteAnimFrame ld a, $8 ld e, a call .UpdateObjectFlags ret .Coords_Zero: dbpixel 1, 3, 5, 2 dbpixel 7, 3, 5, 2 dbpixel 13, 3, 5, 2 dbpixel 1, 5, 5, 2 dbpixel 7, 5, 5, 2 dbpixel 13, 5, 5, 2 dbpixel 1, 17, 5, 2 dbpixel 7, 17, 5, 2 dbpixel 13, 17, 5, 2 .Coords_One: dbpixel 1, 8, 5, 2 dbpixel 7, 8, 5, 2 dbpixel 13, 8, 5, 2 dbpixel 1, 10, 5, 2 dbpixel 7, 10, 5, 2 dbpixel 13, 10, 5, 2 dbpixel 1, 12, 5, 2 dbpixel 7, 12, 5, 2 dbpixel 13, 12, 5, 2 dbpixel 1, 14, 5, 2 dbpixel 7, 14, 5, 2 dbpixel 13, 14, 5, 2 dbpixel 1, 16, 5, 2 dbpixel 7, 16, 5, 2 dbpixel 13, 16, 5, 2 dbpixel 1, 18, 5, 2 dbpixel 7, 18, 5, 2 dbpixel 13, 18, 5, 2 .Coords_Two: dbpixel 2, 9 ; 00 dbpixel 3, 9 ; 01 dbpixel 4, 9 ; 02 dbpixel 5, 9 ; 03 dbpixel 6, 9 ; 04 dbpixel 2, 11 ; 05 dbpixel 3, 11 ; 06 dbpixel 4, 11 ; 07 dbpixel 5, 11 ; 08 dbpixel 6, 11 ; 09 dbpixel 2, 13 ; 0a dbpixel 3, 13 ; 0b dbpixel 4, 13 ; 0c dbpixel 5, 13 ; 0d dbpixel 6, 13 ; 0e dbpixel 2, 15 ; 0f dbpixel 3, 15 ; 10 dbpixel 4, 15 ; 11 dbpixel 5, 15 ; 12 dbpixel 6, 15 ; 13 dbpixel 8, 9 ; 14 dbpixel 9, 9 ; 15 dbpixel 10, 9 ; 16 dbpixel 11, 9 ; 17 dbpixel 12, 9 ; 18 dbpixel 8, 11 ; 19 dbpixel 9, 11 ; 1a dbpixel 10, 11 ; 1b dbpixel 11, 11 ; 1c dbpixel 12, 11 ; 1d dbpixel 8, 13 ; 1e dbpixel 9, 13 ; 1f dbpixel 10, 13 ; 20 dbpixel 11, 13 ; 21 dbpixel 12, 13 ; 22 dbpixel 14, 9 ; 23 dbpixel 16, 9 ; 24 dbpixel 18, 9 ; 25 dbpixel 8, 15 ; 26 dbpixel 9, 15 ; 27 dbpixel 10, 15 ; 28 dbpixel 11, 15 ; 29 dbpixel 12, 15 ; 2a dbpixel 14, 11 ; 2b dbpixel 14, 13 ; 2c dbpixel 1, 18, 5, 2 ; 2d dbpixel 7, 18, 5, 2 ; 2e dbpixel 13, 18, 5, 2 ; 2f .Coords_Three: dbpixel 2, 10 dbpixel 8, 10 dbpixel 14, 10 dbpixel 2, 12 dbpixel 8, 12 dbpixel 14, 12 dbpixel 2, 14 dbpixel 8, 14 dbpixel 14, 14 dbpixel 2, 16 dbpixel 8, 16 dbpixel 14, 16 .Coords_Four: dbpixel 16, 10 dbpixel 16, 12 .Coords_Five: dbpixel 4, 10 dbpixel 4, 12 .FramesetsIDs_Two: db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 00 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 01 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 02 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 03 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 04 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 05 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 06 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 07 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 08 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 09 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0a db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0b db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0c db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0d db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0e db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 0f db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 10 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 11 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 12 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 13 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 14 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 15 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 16 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 17 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 18 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 19 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1a db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1b db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1c db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1d db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1e db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 1f db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 20 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 21 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 22 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 23 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 24 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 25 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 26 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 27 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 28 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 29 db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 2a db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_3 ; 2b db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_4 ; 2c db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1 ; 2d db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1 ; 2e db SPRITE_ANIM_FRAMESET_EZCHAT_CURSOR_1 ; 2f .UpdateObjectFlags: ld hl, wcd24 and [hl] jr nz, .update_y_offset ld a, e ld hl, wcd23 and [hl] jr z, .reset_y_offset ld hl, SPRITEANIMSTRUCT_VAR3 add hl, bc ld a, [hl] and a jr z, .flip_bit_0 dec [hl] ret .flip_bit_0 ld a, $0 ld [hld], a ld a, $1 xor [hl] ld [hl], a and a jr nz, .update_y_offset .reset_y_offset ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc xor a ld [hl], a ret .update_y_offset ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, $b0 sub [hl] ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret Function11d323: ldh a, [rSVBK] push af ld a, $5 ldh [rSVBK], a ld hl, Palette_11d33a ld de, wBGPals1 ld bc, 16 palettes call CopyBytes pop af ldh [rSVBK], a ret Palette_11d33a: RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 16, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 23, 17, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 31, 31, 31 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 RGB 00, 00, 00 EZChat_GetSeenPokemonByKana: ldh a, [rSVBK] push af ld hl, wc648 ld a, LOW(w5_d800) ld [wcd2d], a ld [hli], a ld a, HIGH(w5_d800) ld [wcd2e], a ld [hl], a ld a, LOW(EZChat_SortedPokemon) ld [wcd2f], a ld a, HIGH(EZChat_SortedPokemon) ld [wcd30], a ld a, LOW(wc6a8) ld [wcd31], a ld a, HIGH(wc6a8) ld [wcd32], a ld a, LOW(wc64a) ld [wcd33], a ld a, HIGH(wc64a) ld [wcd34], a ld hl, EZChat_SortedWords ld a, (EZChat_SortedWords.End - EZChat_SortedWords) / 4 .MasterLoop: push af ; read row ; offset ld a, [hli] ld e, a ld a, [hli] ld d, a ; size ld a, [hli] ld c, a ld a, [hli] ld b, a ; save the pointer to the next row push hl ; add de to w3_d000 ld hl, w3_d000 add hl, de ; recover de from wcd2d (default: w5_d800) ld a, [wcd2d] ld e, a ld a, [wcd2e] ld d, a ; save bc for later push bc .loop1 ; copy 2*bc bytes from 3:hl to 5:de ld a, $3 ldh [rSVBK], a ld a, [hli] push af ld a, $5 ldh [rSVBK], a pop af ld [de], a inc de ld a, $3 ldh [rSVBK], a ld a, [hli] push af ld a, $5 ldh [rSVBK], a pop af ld [de], a inc de dec bc ld a, c or b jr nz, .loop1 ; recover the pointer from wcd2f (default: EZChat_SortedPokemon) ld a, [wcd2f] ld l, a ld a, [wcd30] ld h, a ; copy the pointer from [hl] to bc ld a, [hli] ld c, a ld a, [hli] ld b, a ; store the pointer to the next pointer back in wcd2f ld a, l ld [wcd2f], a ld a, h ld [wcd30], a ; push pop that pointer to hl push bc pop hl ld c, $0 .loop2 ; Have you seen this Pokemon? ld a, [hl] cp $ff jr z, .done call .CheckSeenMon jr nz, .next ; If not, skip it. inc hl jr .loop2 .next ; If so, append it to the list at 5:de, and increase the count. ld a, [hli] ld [de], a inc de xor a ld [de], a inc de inc c jr .loop2 .done ; Remember the original value of bc from the table? ; Well, the stack remembers it, and it's popping it to hl. pop hl ; Add the number of seen Pokemon from the list. ld b, $0 add hl, bc ; Push pop to bc. push hl pop bc ; Load the pointer from [wcd31] (default: wc6a8) ld a, [wcd31] ld l, a ld a, [wcd32] ld h, a ; Save the quantity from bc to [hl] ld a, c ld [hli], a ld a, b ld [hli], a ; Save the new value of hl to [wcd31] ld a, l ld [wcd31], a ld a, h ld [wcd32], a ; Recover the pointer from [wcd33] (default: wc64a) ld a, [wcd33] ld l, a ld a, [wcd34] ld h, a ; Save the current value of de there ld a, e ld [wcd2d], a ld [hli], a ld a, d ld [wcd2e], a ; Save the new value of hl back to [wcd33] ld [hli], a ld a, l ld [wcd33], a ld a, h ld [wcd34], a ; Next row pop hl pop af dec a jr z, .ExitMasterLoop jp .MasterLoop .ExitMasterLoop: pop af ldh [rSVBK], a ret .CheckSeenMon: push hl push bc push de dec a ld hl, rSVBK ld e, $1 ld [hl], e call CheckSeenMon ld hl, rSVBK ld e, $5 ld [hl], e pop de pop bc pop hl ret EZChat_GetCategoryWordsByKana: ldh a, [rSVBK] push af ld a, $3 ldh [rSVBK], a ; load pointers ld hl, MobileEZChatCategoryPointers ld bc, MobileEZChatData_WordAndPageCounts ; init WRAM registers xor a ld [wcd2d], a inc a ld [wcd2e], a ; enter the first loop ld a, 14 .loop1 push af ; load the pointer to the category ld a, [hli] ld e, a ld a, [hli] ld d, a push hl ; skip to the attributes ld hl, NAME_LENGTH_JAPANESE - 1 add hl, de ; get the number of words in the category ld a, [bc] ; number of entries to copy inc bc inc bc push bc .loop2 push af push hl ; load offset at [hl] ld a, [hli] ld e, a ld a, [hl] ld d, a ; add to w3_d000 ld hl, w3_d000 add hl, de ; copy from wcd2d and increment [wcd2d] in place ld a, [wcd2d] ld [hli], a inc a ld [wcd2d], a ; copy from wcd2e ld a, [wcd2e] ld [hl], a ; next entry pop hl ld de, 8 add hl, de pop af dec a jr nz, .loop2 ; reset and go to next category ld hl, wcd2d xor a ld [hli], a inc [hl] pop bc pop hl pop af dec a jr nz, .loop1 pop af ldh [rSVBK], a ret INCLUDE "data/pokemon/ezchat_order.asm" SelectStartGFX: INCBIN "gfx/mobile/select_start.2bpp" EZChatSlowpokeLZ: INCBIN "gfx/pokedex/slowpoke.2bpp.lz" MobileEZChatCategoryNames: ; entries correspond to EZCHAT_* constants db "ポケモン@@" ; 00 db "タイプ@@@" ; 01 db "あいさつ@@" ; 02 db "ひと@@@@" ; 03 db "バトル@@@" ; 04 db "こえ@@@@" ; 05 db "かいわ@@@" ; 06 db "きもち@@@" ; 07 db "じょうたい@" ; 08 db "せいかつ@@" ; 09 db "しゅみ@@@" ; 0a db "こうどう@@" ; 0b db "じかん@@@" ; 0c db "むすび@@@" ; 0d db "あれこれ@@" ; 0e MobileEZChatCategoryPointers: ; entries correspond to EZCHAT_* constants dw .Types ; 01 dw .Greetings ; 02 dw .People ; 03 dw .Battle ; 04 dw .Exclamations ; 05 dw .Conversation ; 06 dw .Feelings ; 07 dw .Conditions ; 08 dw .Life ; 09 dw .Hobbies ; 0a dw .Actions ; 0b dw .Time ; 0c dw .Farewells ; 0d dw .ThisAndThat ; 0e .Types: db "あく@@@", $26, $0, $0 db "いわ@@@", $aa, $0, $0 db "エスパー@", $da, $0, $0 db "かくとう@", $4e, $1, $0 db "くさ@@@", $ba, $1, $0 db "ゴースト@", $e4, $1, $0 db "こおり@@", $e6, $1, $0 db "じめん@@", $68, $2, $0 db "タイプ@@", $e8, $2, $0 db "でんき@@", $8e, $3, $0 db "どく@@@", $ae, $3, $0 db "ドラゴン@", $bc, $3, $0 db "ノーマル@", $22, $4, $0 db "はがね@@", $36, $4, $0 db "ひこう@@", $5e, $4, $0 db "ほのお@@", $b2, $4, $0 db "みず@@@", $f4, $4, $0 db "むし@@@", $12, $5, $0 .Greetings: db "ありがと@", $58, $0, $0 db "ありがとう", $5a, $0, $0 db "いくぜ!@", $80, $0, $0 db "いくよ!@", $82, $0, $0 db "いくわよ!", $84, $0, $0 db "いやー@@", $a6, $0, $0 db "おっす@@", $a, $1, $0 db "おはつです", $22, $1, $0 db "おめでとう", $2a, $1, $0 db "ごめん@@", $f8, $1, $0 db "ごめんよ@", $fa, $1, $0 db "こらっ@@", $fc, $1, $0 db "こんちは!", $a, $2, $0 db "こんにちは", $10, $2, $0 db "さようなら", $28, $2, $0 db "サンキュー", $2e, $2, $0 db "さんじょう", $30, $2, $0 db "しっけい@", $48, $2, $0 db "しつれい@", $4c, $2, $0 db "じゃーね@", $6c, $2, $0 db "すいません", $8c, $2, $0 db "それじゃ@", $ca, $2, $0 db "どうも@@", $a6, $3, $0 db "なんじゃ@", $ee, $3, $0 db "ハーイ@@", $2c, $4, $0 db "はいはい@", $32, $4, $0 db "バイバイ@", $34, $4, $0 db "へイ@@@", $8a, $4, $0 db "またね@@", $de, $4, $0 db "もしもし@", $32, $5, $0 db "やあ@@@", $3e, $5, $0 db "やっほー@", $4e, $5, $0 db "よう@@@", $62, $5, $0 db "ようこそ@", $64, $5, $0 db "よろしく@", $80, $5, $0 db "らっしゃい", $94, $5, $0 .People: db "あいて@@", $1c, $0, $0 db "あたし@@", $36, $0, $0 db "あなた@@", $40, $0, $0 db "あなたが@", $42, $0, $0 db "あなたに@", $44, $0, $0 db "あなたの@", $46, $0, $0 db "あなたは@", $48, $0, $0 db "あなたを@", $4a, $0, $0 db "おかあさん", $e8, $0, $0 db "おじいさん", $fc, $0, $0 db "おじさん@", $2, $1, $0 db "おとうさん", $e, $1, $0 db "おとこのこ", $10, $1, $0 db "おとな@@", $14, $1, $0 db "おにいさん", $16, $1, $0 db "おねえさん", $18, $1, $0 db "おばあさん", $1c, $1, $0 db "おばさん@", $20, $1, $0 db "おれさま@", $34, $1, $0 db "おんなのこ", $3a, $1, $0 db "ガール@@", $40, $1, $0 db "かぞく@@", $52, $1, $0 db "かのじょ@", $72, $1, $0 db "かれ@@@", $7c, $1, $0 db "きみ@@@", $9a, $1, $0 db "きみが@@", $9c, $1, $0 db "きみに@@", $9e, $1, $0 db "きみの@@", $a0, $1, $0 db "きみは@@", $a2, $1, $0 db "きみを@@", $a4, $1, $0 db "ギャル@@", $ae, $1, $0 db "きょうだい", $b2, $1, $0 db "こども@@", $f0, $1, $0 db "じぶん@@", $54, $2, $0 db "じぶんが@", $56, $2, $0 db "じぶんに@", $58, $2, $0 db "じぶんの@", $5a, $2, $0 db "じぶんは@", $5c, $2, $0 db "じぶんを@", $5e, $2, $0 db "だれ@@@", $18, $3, $0 db "だれか@@", $1a, $3, $0 db "だれが@@", $1c, $3, $0 db "だれに@@", $1e, $3, $0 db "だれの@@", $20, $3, $0 db "だれも@@", $22, $3, $0 db "だれを@@", $24, $3, $0 db "ちゃん@@", $38, $3, $0 db "ともだち@", $b8, $3, $0 db "なかま@@", $d4, $3, $0 db "ひと@@@", $62, $4, $0 db "ボーイ@@", $98, $4, $0 db "ボク@@@", $a0, $4, $0 db "ボクが@@", $a2, $4, $0 db "ボクに@@", $a4, $4, $0 db "ボクの@@", $a6, $4, $0 db "ボクは@@", $a8, $4, $0 db "ボクを@@", $aa, $4, $0 db "みんな@@", $4, $5, $0 db "みんなが@", $6, $5, $0 db "みんなに@", $8, $5, $0 db "みんなの@", $a, $5, $0 db "みんなは@", $c, $5, $0 db "ライバル@", $8a, $5, $0 db "わたし@@", $c2, $5, $0 db "わたしが@", $c4, $5, $0 db "わたしに@", $c6, $5, $0 db "わたしの@", $c8, $5, $0 db "わたしは@", $ca, $5, $0 db "わたしを@", $cc, $5, $0 .Battle: db "あいしょう", $18, $0, $0 db "いけ!@@", $88, $0, $0 db "いちばん@", $96, $0, $0 db "かくご@@", $4c, $1, $0 db "かたせて@", $54, $1, $0 db "かち@@@", $56, $1, $0 db "かつ@@@", $58, $1, $0 db "かった@@", $60, $1, $0 db "かったら@", $62, $1, $0 db "かって@@", $64, $1, $0 db "かてない@", $66, $1, $0 db "かてる@@", $68, $1, $0 db "かなわない", $70, $1, $0 db "きあい@@", $84, $1, $0 db "きめた@@", $a8, $1, $0 db "きりふだ@", $b6, $1, $0 db "くらえ@@", $c2, $1, $0 db "こい!@@", $da, $1, $0 db "こうげき@", $e0, $1, $0 db "こうさん@", $e2, $1, $0 db "こんじょう", $8, $2, $0 db "さいのう@", $16, $2, $0 db "さくせん@", $1a, $2, $0 db "さばき@@", $22, $2, $0 db "しょうぶ@", $7e, $2, $0 db "しょうり@", $80, $2, $0 db "せめ@@@", $b4, $2, $0 db "センス@@", $b6, $2, $0 db "たいせん@", $e6, $2, $0 db "たたかい@", $f6, $2, $0 db "ちから@@", $32, $3, $0 db "チャレンジ", $36, $3, $0 db "つよい@@", $58, $3, $0 db "つよすぎ@", $5a, $3, $0 db "つらい@@", $5c, $3, $0 db "つらかった", $5e, $3, $0 db "てかげん@", $6c, $3, $0 db "てき@@@", $6e, $3, $0 db "てんさい@", $90, $3, $0 db "でんせつ@", $94, $3, $0 db "トレーナー", $c6, $3, $0 db "にげ@@@", $4, $4, $0 db "ぬるい@@", $10, $4, $0 db "ねらう@@", $16, $4, $0 db "バトル@@", $4a, $4, $0 db "ファイト@", $72, $4, $0 db "ふっかつ@", $78, $4, $0 db "ポイント@", $94, $4, $0 db "ポケモン@", $ac, $4, $0 db "ほんき@@", $bc, $4, $0 db "まいった!", $c4, $4, $0 db "まけ@@@", $c8, $4, $0 db "まけたら@", $ca, $4, $0 db "まけて@@", $cc, $4, $0 db "まける@@", $ce, $4, $0 db "まもり@@", $ea, $4, $0 db "みかた@@", $f2, $4, $0 db "みとめない", $fe, $4, $0 db "みとめる@", $0, $5, $0 db "むてき@@", $16, $5, $0 db "もらった!", $3c, $5, $0 db "よゆう@@", $7a, $5, $0 db "よわい@@", $82, $5, $0 db "よわすぎ@", $84, $5, $0 db "らくしょう", $8e, $5, $0 db "りーダー@", $9e, $5, $0 db "ルール@@", $a0, $5, $0 db "レべル@@", $a6, $5, $0 db "わざ@@@", $be, $5, $0 .Exclamations: db "!@@@@", $0, $0, $0 db "!!@@@", $2, $0, $0 db "!?@@@", $4, $0, $0 db "?@@@@", $6, $0, $0 db "⋯@@@@", $8, $0, $0 db "⋯!@@@", $a, $0, $0 db "⋯⋯⋯@@", $c, $0, $0 db "ー@@@@", $e, $0, $0 db "ーーー@@", $10, $0, $0 db "あーあ@@", $14, $0, $0 db "あーん@@", $16, $0, $0 db "あははー@", $52, $0, $0 db "あら@@@", $54, $0, $0 db "いえ@@@", $72, $0, $0 db "イエス@@", $74, $0, $0 db "うう@@@", $ac, $0, $0 db "うーん@@", $ae, $0, $0 db "うおー!@", $b0, $0, $0 db "うおりゃー", $b2, $0, $0 db "うひょー@", $bc, $0, $0 db "うふふ@@", $be, $0, $0 db "うわー@@", $ca, $0, $0 db "うわーん@", $cc, $0, $0 db "ええ@@@", $d2, $0, $0 db "えー@@@", $d4, $0, $0 db "えーん@@", $d6, $0, $0 db "えへへ@@", $dc, $0, $0 db "おいおい@", $e0, $0, $0 db "おお@@@", $e2, $0, $0 db "おっと@@", $c, $1, $0 db "がーん@@", $42, $1, $0 db "キャー@@", $aa, $1, $0 db "ギャー@@", $ac, $1, $0 db "ぐふふふふ", $bc, $1, $0 db "げっ@@@", $ce, $1, $0 db "しくしく@", $3e, $2, $0 db "ちえっ@@", $2e, $3, $0 db "てへ@@@", $86, $3, $0 db "ノー@@@", $20, $4, $0 db "はあー@@", $2a, $4, $0 db "はい@@@", $30, $4, $0 db "はっはっは", $48, $4, $0 db "ひいー@@", $56, $4, $0 db "ひゃあ@@", $6a, $4, $0 db "ふっふっふ", $7c, $4, $0 db "ふにゃ@@", $7e, $4, $0 db "ププ@@@", $80, $4, $0 db "ふふん@@", $82, $4, $0 db "ふん@@@", $88, $4, $0 db "へっへっへ", $8e, $4, $0 db "へへー@@", $90, $4, $0 db "ほーほほほ", $9c, $4, $0 db "ほら@@@", $b6, $4, $0 db "まあ@@@", $c0, $4, $0 db "むきー!!", $10, $5, $0 db "むふー@@", $18, $5, $0 db "むふふ@@", $1a, $5, $0 db "むむ@@@", $1c, $5, $0 db "よーし@@", $6a, $5, $0 db "よし!@@", $72, $5, $0 db "ラララ@@", $98, $5, $0 db "わーい@@", $ac, $5, $0 db "わーん!!", $b0, $5, $0 db "ワオ@@@", $b2, $5, $0 db "わっ!!@", $ce, $5, $0 db "わははは!", $d0, $5, $0 .Conversation: db "あのね@@", $50, $0, $0 db "あんまり@", $6e, $0, $0 db "いじわる@", $8e, $0, $0 db "うそ@@@", $b6, $0, $0 db "うむ@@@", $c4, $0, $0 db "おーい@@", $e4, $0, $0 db "おすすめ@", $6, $1, $0 db "おばかさん", $1e, $1, $0 db "かなり@@", $6e, $1, $0 db "から@@@", $7a, $1, $0 db "きぶん@@", $98, $1, $0 db "けど@@@", $d6, $1, $0 db "こそ@@@", $ea, $1, $0 db "こと@@@", $ee, $1, $0 db "さあ@@@", $12, $2, $0 db "さっぱり@", $1e, $2, $0 db "さて@@@", $20, $2, $0 db "じゅうぶん", $72, $2, $0 db "すぐ@@@", $94, $2, $0 db "すごく@@", $98, $2, $0 db "すこしは@", $9a, $2, $0 db "すっっごい", $a0, $2, $0 db "ぜーんぜん", $b0, $2, $0 db "ぜったい@", $b2, $2, $0 db "それで@@", $ce, $2, $0 db "だけ@@@", $f2, $2, $0 db "だって@@", $fc, $2, $0 db "たぶん@@", $6, $3, $0 db "たら@@@", $14, $3, $0 db "ちょー@@", $3a, $3, $0 db "ちょっと@", $3c, $3, $0 db "ったら@@", $4e, $3, $0 db "って@@@", $50, $3, $0 db "ていうか@", $62, $3, $0 db "でも@@@", $88, $3, $0 db "どうしても", $9c, $3, $0 db "とうぜん@", $a0, $3, $0 db "どうぞ@@", $a2, $3, $0 db "とりあえず", $be, $3, $0 db "なあ@@@", $cc, $3, $0 db "なんて@@", $f4, $3, $0 db "なんでも@", $fc, $3, $0 db "なんとか@", $fe, $3, $0 db "には@@@", $8, $4, $0 db "バッチり@", $46, $4, $0 db "ばりばり@", $52, $4, $0 db "ほど@@@", $b0, $4, $0 db "ほんと@@", $be, $4, $0 db "まさに@@", $d0, $4, $0 db "マジ@@@", $d2, $4, $0 db "マジで@@", $d4, $4, $0 db "まったく@", $e4, $4, $0 db "まで@@@", $e6, $4, $0 db "まるで@@", $ec, $4, $0 db "ムード@@", $e, $5, $0 db "むしろ@@", $14, $5, $0 db "めちゃ@@", $24, $5, $0 db "めっぽう@", $28, $5, $0 db "もう@@@", $2c, $5, $0 db "モード@@", $2e, $5, $0 db "もっと@@", $36, $5, $0 db "もはや@@", $38, $5, $0 db "やっと@@", $4a, $5, $0 db "やっぱり@", $4c, $5, $0 db "より@@@", $7c, $5, $0 db "れば@@@", $a4, $5, $0 .Feelings: db "あいたい@", $1a, $0, $0 db "あそびたい", $32, $0, $0 db "いきたい@", $7c, $0, $0 db "うかれて@", $b4, $0, $0 db "うれしい@", $c6, $0, $0 db "うれしさ@", $c8, $0, $0 db "エキサイト", $d8, $0, $0 db "えらい@@", $de, $0, $0 db "おかしい@", $ec, $0, $0 db "オッケー@", $8, $1, $0 db "かえりたい", $48, $1, $0 db "がっくし@", $5a, $1, $0 db "かなしい@", $6c, $1, $0 db "がんばって", $80, $1, $0 db "きがしない", $86, $1, $0 db "きがする@", $88, $1, $0 db "ききたい@", $8a, $1, $0 db "きになる@", $90, $1, $0 db "きのせい@", $96, $1, $0 db "きらい@@", $b4, $1, $0 db "くやしい@", $be, $1, $0 db "くやしさ@", $c0, $1, $0 db "さみしい@", $24, $2, $0 db "ざんねん@", $32, $2, $0 db "しあわせ@", $36, $2, $0 db "したい@@", $44, $2, $0 db "したくない", $46, $2, $0 db "しまった@", $64, $2, $0 db "しょんぼり", $82, $2, $0 db "すき@@@", $92, $2, $0 db "だいきらい", $da, $2, $0 db "たいくつ@", $dc, $2, $0 db "だいじ@@", $de, $2, $0 db "だいすき@", $e4, $2, $0 db "たいへん@", $ea, $2, $0 db "たのしい@", $0, $3, $0 db "たのしすぎ", $2, $3, $0 db "たべたい@", $8, $3, $0 db "ダメダメ@", $e, $3, $0 db "たりない@", $16, $3, $0 db "ちくしょー", $34, $3, $0 db "どうしよう", $9e, $3, $0 db "ドキドキ@", $ac, $3, $0 db "ナイス@@", $d0, $3, $0 db "のみたい@", $26, $4, $0 db "びっくり@", $60, $4, $0 db "ふあん@@", $74, $4, $0 db "ふらふら@", $86, $4, $0 db "ほしい@@", $ae, $4, $0 db "ボロボロ@", $b8, $4, $0 db "まだまだ@", $e0, $4, $0 db "まてない@", $e8, $4, $0 db "まんぞく@", $f0, $4, $0 db "みたい@@", $f8, $4, $0 db "めずらしい", $22, $5, $0 db "メラメラ@", $2a, $5, $0 db "やだ@@@", $46, $5, $0 db "やったー@", $48, $5, $0 db "やばい@@", $50, $5, $0 db "やばすぎる", $52, $5, $0 db "やられた@", $54, $5, $0 db "やられて@", $56, $5, $0 db "よかった@", $6e, $5, $0 db "ラブラブ@", $96, $5, $0 db "ロマン@@", $a8, $5, $0 db "ろんがい@", $aa, $5, $0 db "わから@@", $b4, $5, $0 db "わかり@@", $b6, $5, $0 db "わくわく@", $ba, $5, $0 .Conditions: db "あつい@@", $38, $0, $0 db "あった@@", $3a, $0, $0 db "あり@@@", $56, $0, $0 db "ある@@@", $5e, $0, $0 db "あわてて@", $6a, $0, $0 db "いい@@@", $70, $0, $0 db "いか@@@", $76, $0, $0 db "イカス@@", $78, $0, $0 db "いきおい@", $7a, $0, $0 db "いける@@", $8a, $0, $0 db "いじょう@", $8c, $0, $0 db "いそがしい", $90, $0, $0 db "いっしょに", $9a, $0, $0 db "いっぱい@", $9c, $0, $0 db "いない@@", $a0, $0, $0 db "いや@@@", $a4, $0, $0 db "いる@@@", $a8, $0, $0 db "うまい@@", $c0, $0, $0 db "うまく@@", $c2, $0, $0 db "おおきい@", $e6, $0, $0 db "おくれ@@", $f2, $0, $0 db "おしい@@", $fa, $0, $0 db "おもしろい", $2c, $1, $0 db "おもしろく", $2e, $1, $0 db "かっこいい", $5c, $1, $0 db "かわいい@", $7e, $1, $0 db "かんぺき@", $82, $1, $0 db "けっこう@", $d0, $1, $0 db "げんき@@", $d8, $1, $0 db "こわい@@", $6, $2, $0 db "さいこう@", $14, $2, $0 db "さむい@@", $26, $2, $0 db "さわやか@", $2c, $2, $0 db "しかたない", $38, $2, $0 db "すごい@@", $96, $2, $0 db "すごすぎ@", $9c, $2, $0 db "すてき@@", $a4, $2, $0 db "たいした@", $e0, $2, $0 db "だいじょぶ", $e2, $2, $0 db "たかい@@", $ec, $2, $0 db "ただしい@", $f8, $2, $0 db "だめ@@@", $c, $3, $0 db "ちいさい@", $2c, $3, $0 db "ちがう@@", $30, $3, $0 db "つかれ@@", $48, $3, $0 db "とくい@@", $b0, $3, $0 db "とまらない", $b6, $3, $0 db "ない@@@", $ce, $3, $0 db "なかった@", $d2, $3, $0 db "なし@@@", $d8, $3, $0 db "なって@@", $dc, $3, $0 db "はやい@@", $50, $4, $0 db "ひかる@@", $5a, $4, $0 db "ひくい@@", $5c, $4, $0 db "ひどい@@", $64, $4, $0 db "ひとりで@", $66, $4, $0 db "ひま@@@", $68, $4, $0 db "ふそく@@", $76, $4, $0 db "へた@@@", $8c, $4, $0 db "まちがって", $e2, $4, $0 db "やさしい@", $42, $5, $0 db "よく@@@", $70, $5, $0 db "よわって@", $86, $5, $0 db "らく@@@", $8c, $5, $0 db "らしい@@", $90, $5, $0 db "わるい@@", $d4, $5, $0 .Life: db "アルバイト", $64, $0, $0 db "うち@@@", $ba, $0, $0 db "おかね@@", $ee, $0, $0 db "おこづかい", $f4, $0, $0 db "おふろ@@", $24, $1, $0 db "がっこう@", $5e, $1, $0 db "きねん@@", $92, $1, $0 db "グループ@", $c6, $1, $0 db "ゲット@@", $d2, $1, $0 db "こうかん@", $de, $1, $0 db "しごと@@", $40, $2, $0 db "しゅぎょう", $74, $2, $0 db "じゅぎょう", $76, $2, $0 db "じゅく@@", $78, $2, $0 db "しんか@@", $88, $2, $0 db "ずかん@@", $90, $2, $0 db "せいかつ@", $ae, $2, $0 db "せんせい@", $b8, $2, $0 db "センター@", $ba, $2, $0 db "タワー@@", $28, $3, $0 db "つうしん@", $40, $3, $0 db "テスト@@", $7e, $3, $0 db "テレビ@@", $8c, $3, $0 db "でんわ@@", $96, $3, $0 db "どうぐ@@", $9a, $3, $0 db "トレード@", $c4, $3, $0 db "なまえ@@", $e8, $3, $0 db "ニュース@", $a, $4, $0 db "にんき@@", $c, $4, $0 db "パーティー", $2e, $4, $0 db "べんきょう", $92, $4, $0 db "マシン@@", $d6, $4, $0 db "めいし@@", $1e, $5, $0 db "メッセージ", $26, $5, $0 db "もようがえ", $3a, $5, $0 db "ゆめ@@@", $5a, $5, $0 db "ようちえん", $66, $5, $0 db "ラジオ@@", $92, $5, $0 db "ワールド@", $ae, $5, $0 .Hobbies: db "アイドル@", $1e, $0, $0 db "アニメ@@", $4c, $0, $0 db "うた@@@", $b8, $0, $0 db "えいが@@", $d0, $0, $0 db "おかし@@", $ea, $0, $0 db "おしゃべり", $4, $1, $0 db "おままごと", $28, $1, $0 db "おもちゃ@", $30, $1, $0 db "おんがく@", $38, $1, $0 db "カード@@", $3e, $1, $0 db "かいもの@", $46, $1, $0 db "グルメ@@", $c8, $1, $0 db "ゲーム@@", $cc, $1, $0 db "ざっし@@", $1c, $2, $0 db "さんぽ@@", $34, $2, $0 db "じてんしゃ", $50, $2, $0 db "しゅみ@@", $7a, $2, $0 db "スポーツ@", $a8, $2, $0 db "ダイエット", $d8, $2, $0 db "たからもの", $f0, $2, $0 db "たび@@@", $4, $3, $0 db "ダンス@@", $2a, $3, $0 db "つり@@@", $60, $3, $0 db "デート@@", $6a, $3, $0 db "でんしゃ@", $92, $3, $0 db "ぬいぐるみ", $e, $4, $0 db "パソコン@", $3e, $4, $0 db "はな@@@", $4c, $4, $0 db "ヒーロー@", $58, $4, $0 db "ひるね@@", $6e, $4, $0 db "ヒロイン@", $70, $4, $0 db "ぼうけん@", $96, $4, $0 db "ボード@@", $9a, $4, $0 db "ボール@@", $9e, $4, $0 db "ほん@@@", $ba, $4, $0 db "マンガ@@", $ee, $4, $0 db "やくそく@", $40, $5, $0 db "やすみ@@", $44, $5, $0 db "よてい@@", $74, $5, $0 .Actions: db "あう@@@", $20, $0, $0 db "あきらめ@", $24, $0, $0 db "あげる@@", $28, $0, $0 db "あせる@@", $2e, $0, $0 db "あそび@@", $30, $0, $0 db "あそぶ@@", $34, $0, $0 db "あつめ@@", $3e, $0, $0 db "あるき@@", $60, $0, $0 db "あるく@@", $62, $0, $0 db "いく@@@", $7e, $0, $0 db "いけ@@@", $86, $0, $0 db "おき@@@", $f0, $0, $0 db "おこり@@", $f6, $0, $0 db "おこる@@", $f8, $0, $0 db "おしえ@@", $fe, $0, $0 db "おしえて@", $0, $1, $0 db "おねがい@", $1a, $1, $0 db "おぼえ@@", $26, $1, $0 db "かえる@@", $4a, $1, $0 db "がまん@@", $74, $1, $0 db "きく@@@", $8c, $1, $0 db "きたえ@@", $8e, $1, $0 db "きめ@@@", $a6, $1, $0 db "くる@@@", $c4, $1, $0 db "さがし@@", $18, $2, $0 db "さわぎ@@", $2a, $2, $0 db "した@@@", $42, $2, $0 db "しって@@", $4a, $2, $0 db "して@@@", $4e, $2, $0 db "しない@@", $52, $2, $0 db "しまう@@", $60, $2, $0 db "じまん@@", $66, $2, $0 db "しらない@", $84, $2, $0 db "しる@@@", $86, $2, $0 db "しんじて@", $8a, $2, $0 db "する@@@", $aa, $2, $0 db "たべる@@", $a, $3, $0 db "つかう@@", $42, $3, $0 db "つかえ@@", $44, $3, $0 db "つかって@", $46, $3, $0 db "できない@", $70, $3, $0 db "できる@@", $72, $3, $0 db "でない@@", $84, $3, $0 db "でる@@@", $8a, $3, $0 db "なげる@@", $d6, $3, $0 db "なやみ@@", $ea, $3, $0 db "ねられ@@", $18, $4, $0 db "ねる@@@", $1a, $4, $0 db "のがし@@", $24, $4, $0 db "のむ@@@", $28, $4, $0 db "はしり@@", $3a, $4, $0 db "はしる@@", $3c, $4, $0 db "はたらき@", $40, $4, $0 db "はたらく@", $42, $4, $0 db "はまって@", $4e, $4, $0 db "ぶつけ@@", $7a, $4, $0 db "ほめ@@@", $b4, $4, $0 db "みせて@@", $f6, $4, $0 db "みて@@@", $fc, $4, $0 db "みる@@@", $2, $5, $0 db "めざす@@", $20, $5, $0 db "もって@@", $34, $5, $0 db "ゆずる@@", $58, $5, $0 db "ゆるす@@", $5c, $5, $0 db "ゆるせ@@", $5e, $5, $0 db "られない@", $9a, $5, $0 db "られる@@", $9c, $5, $0 db "わかる@@", $b8, $5, $0 db "わすれ@@", $c0, $5, $0 .Time: db "あき@@@", $22, $0, $0 db "あさ@@@", $2a, $0, $0 db "あした@@", $2c, $0, $0 db "いちにち@", $94, $0, $0 db "いつか@@", $98, $0, $0 db "いつも@@", $9e, $0, $0 db "いま@@@", $a2, $0, $0 db "えいえん@", $ce, $0, $0 db "おととい@", $12, $1, $0 db "おわり@@", $36, $1, $0 db "かようび@", $78, $1, $0 db "きのう@@", $94, $1, $0 db "きょう@@", $b0, $1, $0 db "きんようび", $b8, $1, $0 db "げつようび", $d4, $1, $0 db "このあと@", $f4, $1, $0 db "このまえ@", $f6, $1, $0 db "こんど@@", $c, $2, $0 db "じかん@@", $3c, $2, $0 db "じゅうねん", $70, $2, $0 db "すいようび", $8e, $2, $0 db "スタート@", $9e, $2, $0 db "ずっと@@", $a2, $2, $0 db "ストップ@", $a6, $2, $0 db "そのうち@", $c4, $2, $0 db "ついに@@", $3e, $3, $0 db "つぎ@@@", $4a, $3, $0 db "どようび@", $ba, $3, $0 db "なつ@@@", $da, $3, $0 db "にちようび", $6, $4, $0 db "はじめ@@", $38, $4, $0 db "はる@@@", $54, $4, $0 db "ひる@@@", $6c, $4, $0 db "ふゆ@@@", $84, $4, $0 db "まいにち@", $c6, $4, $0 db "もくようび", $30, $5, $0 db "よなか@@", $76, $5, $0 db "よる@@@", $7e, $5, $0 db "らいしゅう", $88, $5, $0 .Farewells: db "いたします", $92, $0, $0 db "おります@", $32, $1, $0 db "か!?@@", $3c, $1, $0 db "かい?@@", $44, $1, $0 db "かしら?@", $50, $1, $0 db "かな?@@", $6a, $1, $0 db "かも@@@", $76, $1, $0 db "くれ@@@", $ca, $1, $0 db "ございます", $e8, $1, $0 db "しがち@@", $3a, $2, $0 db "します@@", $62, $2, $0 db "じゃ@@@", $6a, $2, $0 db "じゃん@@", $6e, $2, $0 db "しよう@@", $7c, $2, $0 db "ぜ!@@@", $ac, $2, $0 db "ぞ!@@@", $bc, $2, $0 db "た@@@@", $d4, $2, $0 db "だ@@@@", $d6, $2, $0 db "だからね@", $ee, $2, $0 db "だぜ@@@", $f4, $2, $0 db "だった@@", $fa, $2, $0 db "だね@@@", $fe, $2, $0 db "だよ@@@", $10, $3, $0 db "だよねー!", $12, $3, $0 db "だわ@@@", $26, $3, $0 db "ッス@@@", $4c, $3, $0 db "ってかんじ", $52, $3, $0 db "っぱなし@", $54, $3, $0 db "つもり@@", $56, $3, $0 db "ていない@", $64, $3, $0 db "ている@@", $66, $3, $0 db "でーす!@", $68, $3, $0 db "でした@@", $74, $3, $0 db "でしょ?@", $76, $3, $0 db "でしょー!", $78, $3, $0 db "です@@@", $7a, $3, $0 db "ですか?@", $7c, $3, $0 db "ですよ@@", $80, $3, $0 db "ですわ@@", $82, $3, $0 db "どうなの?", $a4, $3, $0 db "どうよ?@", $a8, $3, $0 db "とかいって", $aa, $3, $0 db "なの@@@", $e0, $3, $0 db "なのか@@", $e2, $3, $0 db "なのだ@@", $e4, $3, $0 db "なのよ@@", $e6, $3, $0 db "なんだね@", $f2, $3, $0 db "なんです@", $f8, $3, $0 db "なんてね@", $fa, $3, $0 db "ね@@@@", $12, $4, $0 db "ねー@@@", $14, $4, $0 db "の@@@@", $1c, $4, $0 db "の?@@@", $1e, $4, $0 db "ばっかり@", $44, $4, $0 db "まーす!@", $c2, $4, $0 db "ます@@@", $d8, $4, $0 db "ますわ@@", $da, $4, $0 db "ません@@", $dc, $4, $0 db "みたいな@", $fa, $4, $0 db "よ!@@@", $60, $5, $0 db "よー@@@", $68, $5, $0 db "よーん@@", $6c, $5, $0 db "よね@@@", $78, $5, $0 db "るよ@@@", $a2, $5, $0 db "わけ@@@", $bc, $5, $0 db "わよ!@@", $d2, $5, $0 .ThisAndThat: db "ああ@@@", $12, $0, $0 db "あっち@@", $3c, $0, $0 db "あの@@@", $4e, $0, $0 db "ありゃ@@", $5c, $0, $0 db "あれ@@@", $66, $0, $0 db "あれは@@", $68, $0, $0 db "あんな@@", $6c, $0, $0 db "こう@@@", $dc, $1, $0 db "こっち@@", $ec, $1, $0 db "この@@@", $f2, $1, $0 db "こりゃ@@", $fe, $1, $0 db "これ@@@", $0, $2, $0 db "これだ!@", $2, $2, $0 db "これは@@", $4, $2, $0 db "こんな@@", $e, $2, $0 db "そう@@@", $be, $2, $0 db "そっち@@", $c0, $2, $0 db "その@@@", $c2, $2, $0 db "そりゃ@@", $c6, $2, $0 db "それ@@@", $c8, $2, $0 db "それだ!@", $cc, $2, $0 db "それは@@", $d0, $2, $0 db "そんな@@", $d2, $2, $0 db "どう@@@", $98, $3, $0 db "どっち@@", $b2, $3, $0 db "どの@@@", $b4, $3, $0 db "どりゃ@@", $c0, $3, $0 db "どれ@@@", $c2, $3, $0 db "どれを@@", $c8, $3, $0 db "どんな@@", $ca, $3, $0 db "なに@@@", $de, $3, $0 db "なんか@@", $ec, $3, $0 db "なんだ@@", $f0, $3, $0 db "なんで@@", $f6, $3, $0 db "なんなんだ", $0, $4, $0 db "なんの@@", $2, $4, $0 MobileEZChatData_WordAndPageCounts: MACRO macro_11f220 ; parameter: number of words db \1 ; 12 words per page (0-based indexing) db (\1 - 1) / 12 ENDM macro_11f220 18 ; 01: Types macro_11f220 36 ; 02: Greetings macro_11f220 69 ; 03: People macro_11f220 69 ; 04: Battle macro_11f220 66 ; 05: Exclamations macro_11f220 66 ; 06: Conversation macro_11f220 69 ; 07: Feelings macro_11f220 66 ; 08: Conditions macro_11f220 39 ; 09: Life macro_11f220 39 ; 0a: Hobbies macro_11f220 69 ; 0b: Actions macro_11f220 39 ; 0c: Time macro_11f220 66 ; 0d: Farewells macro_11f220 36 ; 0e: ThisAndThat EZChat_SortedWords: ; Addresses in WRAM bank 3 where EZChat words beginning ; with the given kana are sorted in memory, and the pre- ; allocated size for each. ; These arrays are expanded dynamically to accomodate ; any Pokemon you've seen that starts with each kana. MACRO macro_11f23c dw w3_d012 - w3_d000 + x, \1 DEF x += 2 * \1 ENDM DEF x = 0 macro_11f23c $2f ; a macro_11f23c $1e ; i macro_11f23c $11 ; u macro_11f23c $09 ; e macro_11f23c $2e ; o macro_11f23c $24 ; ka_ga macro_11f23c $1b ; ki_gi macro_11f23c $09 ; ku_gu macro_11f23c $07 ; ke_ge macro_11f23c $1c ; ko_go macro_11f23c $12 ; sa_za macro_11f23c $2b ; shi_ji macro_11f23c $10 ; su_zu macro_11f23c $08 ; se_ze macro_11f23c $0c ; so_zo macro_11f23c $2c ; ta_da macro_11f23c $09 ; chi_dhi macro_11f23c $12 ; tsu_du macro_11f23c $1b ; te_de macro_11f23c $1a ; to_do macro_11f23c $1c ; na macro_11f23c $05 ; ni macro_11f23c $02 ; nu macro_11f23c $05 ; ne macro_11f23c $07 ; no macro_11f23c $16 ; ha_ba_pa macro_11f23c $0e ; hi_bi_pi macro_11f23c $0c ; fu_bu_pu macro_11f23c $05 ; he_be_pe macro_11f23c $16 ; ho_bo_po macro_11f23c $19 ; ma macro_11f23c $0e ; mi macro_11f23c $08 ; mu macro_11f23c $07 ; me macro_11f23c $09 ; mo macro_11f23c $0d ; ya macro_11f23c $04 ; yu macro_11f23c $14 ; yo macro_11f23c $0b ; ra macro_11f23c $01 ; ri macro_11f23c $02 ; ru macro_11f23c $02 ; re macro_11f23c $02 ; ro macro_11f23c $15 ; wa dw NULL, $09 ; end .End