diff options
author | U-Fish-PC\Daniel <corrnondacqb@yahoo.com> | 2014-05-22 18:13:20 -0400 |
---|---|---|
committer | U-Fish-PC\Daniel <corrnondacqb@yahoo.com> | 2014-05-22 18:13:20 -0400 |
commit | 15427f532085846ab6b51719be687951a094cb6c (patch) | |
tree | edea9b189e91641a12dd521756894df84aeeace7 /engine/menu/naming_screen.asm | |
parent | ea3ba4cde3706b7c77efb705555ec0c86321cbe2 (diff) |
Pull a lot of engine out of main.asm
Diffstat (limited to 'engine/menu/naming_screen.asm')
-rwxr-xr-x | engine/menu/naming_screen.asm | 515 |
1 files changed, 515 insertions, 0 deletions
diff --git a/engine/menu/naming_screen.asm b/engine/menu/naming_screen.asm new file mode 100755 index 00000000..ea6f7de7 --- /dev/null +++ b/engine/menu/naming_screen.asm @@ -0,0 +1,515 @@ +AskForMonNickname: ; 64eb (1:64eb) + call SaveScreenTilesToBuffer1 + call Load16BitRegisters + push hl + ld a, [W_ISINBATTLE] ; $d057 + dec a + ld hl, wTileMap + ld b, $4 + ld c, $b + call z, ClearScreenArea ; only if in wild batle + ld a, [$cf91] + ld [$d11e], a + call GetMonName + ld hl, DoYouWantToNicknameText + call PrintText + FuncCoord 14, 7 ; $c43a + ld hl, Coord + ld bc, $80f + ld a, $14 + ld [$d125], a + call DisplayTextBoxID + pop hl + ld a, [wCurrentMenuItem] ; $cc26 + and a + jr nz, .asm_654c + ld a, [$cfcb] + push af + xor a + ld [$cfcb], a + push hl + ld a, $2 + ld [$d07d], a + call DisplayNamingScreen + ld a, [W_ISINBATTLE] ; $d057 + and a + jr nz, .asm_653e + call Func_3e08 +.asm_653e + call LoadScreenTilesFromBuffer1 + pop hl + pop af + ld [$cfcb], a + ld a, [$cf4b] + cp $50 + ret nz +.asm_654c + ld d, h + ld e, l + ld hl, $cd6d + ld bc, $000b + jp CopyData + +DoYouWantToNicknameText: ; 0x6557 + TX_FAR _DoYouWantToNicknameText + db "@" + +Func_655c: ; 655c (1:655c) + ld hl, $cee9 + xor a + ld [$cfcb], a + ld a, $2 + ld [$d07d], a + call DisplayNamingScreen + call GBPalWhiteOutWithDelay3 + call Func_3dbe + call LoadGBPal + ld a, [$cf4b] + cp $50 + jr z, .asm_6594 + ld hl, W_PARTYMON1NAME ; $d2b5 + ld bc, $b + ld a, [wWhichPokemon] ; $cf92 + call AddNTimes + ld e, l + ld d, h + ld hl, $cee9 + ld bc, $b + call CopyData + and a + ret +.asm_6594 + scf + ret + +DisplayNamingScreen: ; 6596 (1:6596) + push hl + ld hl, $d730 + set 6, [hl] + call GBPalWhiteOutWithDelay3 + call ClearScreen + call UpdateSprites + ld b, $8 + call GoPAL_SET + call LoadHpBarAndStatusTilePatterns + call LoadEDTile + callba Func_7176c + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld b, $9 + ld c, $12 + call TextBoxBorder + call PrintNamingText + ld a, $3 + ld [wTopMenuItemY], a ; $cc24 + ld a, $1 + ld [wTopMenuItemX], a ; $cc25 + ld [wLastMenuItem], a ; $cc2a + ld [wCurrentMenuItem], a ; $cc26 + ld a, $ff + ld [wMenuWatchedKeys], a ; $cc29 + ld a, $7 + ld [wMaxMenuItem], a ; $cc28 + ld a, $50 + ld [$cf4b], a + xor a + ld hl, $ceea + ld [hli], a + ld [hli], a + ld [W_SUBANIMTRANSFORM], a ; $d08b +.asm_65ed + call PrintAlphabet + call GBPalNormal +.asm_65f3 + ld a, [$ceea] + and a + jr nz, .asm_662d + call Func_680e +.asm_65fc + call PlaceMenuCursor +.asm_65ff + ld a, [wCurrentMenuItem] ; $cc26 + push af + callba AnimatePartyMon_ForceSpeed1 + pop af + ld [wCurrentMenuItem], a ; $cc26 + call GetJoypadStateLowSensitivity + ld a, [H_NEWLYPRESSEDBUTTONS] + and a + jr z, .asm_65ff + ld hl, .unknownPointerTable_665e ; $665e +.asm_661a + sla a + jr c, .asm_6624 + inc hl + inc hl + inc hl + inc hl + jr .asm_661a +.asm_6624 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + push de + jp [hl] +.asm_662d + pop de + ld hl, $cf4b + ld bc, $b + call CopyData + call GBPalWhiteOutWithDelay3 + call ClearScreen + call CleanLCD_OAM + call GoPAL_SET_CF1C + call GBPalNormal + xor a + ld [W_SUBANIMTRANSFORM], a ; $d08b + ld hl, $d730 + res 6, [hl] + ld a, [W_ISINBATTLE] ; $d057 + and a + jp z, LoadTextBoxTilePatterns + ld hl, Func_3ee5b + ld b, BANK(Func_3ee5b) + jp Bankswitch + +.unknownPointerTable_665e: ; 665e (1:665e) + dw .asm_65fc + dw .asm_673e + dw .asm_65fc + dw .asm_672c + dw .asm_65fc + dw .asm_6718 + dw .asm_65fc + dw .asm_6702 + dw .asm_65f3 + dw .asm_668c + dw .asm_65ed + dw .asm_6683 + dw .asm_65f3 + dw .deleteLetter + dw .asm_65f3 + dw .asm_6692 + +.asm_667e + pop de + ld de, .asm_65ed ; $65ed + push de +.asm_6683 + ld a, [$ceeb] + xor $1 + ld [$ceeb], a + ret +.asm_668c + ld a, $1 + ld [$ceea], a + ret +.asm_6692 + ld a, [wCurrentMenuItem] ; $cc26 + cp $5 + jr nz, .asm_66a0 + ld a, [wTopMenuItemX] ; $cc25 + cp $11 + jr z, .asm_668c +.asm_66a0 + ld a, [wCurrentMenuItem] ; $cc26 + cp $6 + jr nz, .asm_66ae + ld a, [wTopMenuItemX] ; $cc25 + cp $1 + jr z, .asm_667e +.asm_66ae + ld hl, wMenuCursorLocation ; $cc30 + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + ld a, [hl] + ld [$ceed], a + call CalcStringLength + ld a, [$ceed] + cp $e5 + ld de, Dakutens ; $6885 + jr z, .asm_66e3 + cp $e4 + ld de, Handakutens ; $68d6 + jr z, .asm_66e3 + ld a, [$d07d] + cp $2 + jr nc, .checkMonNameLength + ld a, [$cee9] + cp $7 ; max length of player/rival names + jr .checkNameLength +.checkMonNameLength + ld a, [$cee9] + cp $a ; max length of pokemon nicknames +.checkNameLength + jr c, .addLetter + ret +.asm_66e3 + push hl + call Func_6871 + pop hl + ret nc + dec hl +.addLetter + ld a, [$ceed] + ld [hli], a + ld [hl], $50 + ld a, (SFX_02_40 - SFX_Headers_02) / 3 + call PlaySound + ret +.deleteLetter + ld a, [$cee9] + and a + ret z + call CalcStringLength + dec hl + ld [hl], $50 + ret +.asm_6702 + ld a, [wCurrentMenuItem] ; $cc26 + cp $6 + ret z + ld a, [wTopMenuItemX] ; $cc25 + cp $11 + jp z, .asm_6714 + inc a + inc a + jr .asm_6755 +.asm_6714 + ld a, $1 + jr .asm_6755 +.asm_6718 + ld a, [wCurrentMenuItem] ; $cc26 + cp $6 + ret z + ld a, [wTopMenuItemX] ; $cc25 + dec a + jp z, .asm_6728 + dec a + jr .asm_6755 +.asm_6728 + ld a, $11 + jr .asm_6755 +.asm_672c + ld a, [wCurrentMenuItem] ; $cc26 + dec a + ld [wCurrentMenuItem], a ; $cc26 + and a + ret nz + ld a, $6 + ld [wCurrentMenuItem], a ; $cc26 + ld a, $1 + jr .asm_6755 +.asm_673e + ld a, [wCurrentMenuItem] ; $cc26 + inc a + ld [wCurrentMenuItem], a ; $cc26 + cp $7 + jr nz, .asm_6750 + ld a, $1 + ld [wCurrentMenuItem], a ; $cc26 + jr .asm_6755 +.asm_6750 + cp $6 + ret nz + ld a, $1 +.asm_6755 + ld [wTopMenuItemX], a ; $cc25 + jp EraseMenuCursor + +LoadEDTile: ; 675b (1:675b) + ld de, ED_Tile + ld hl, $8f00 + ld bc, $1 + jp CopyVideoDataDouble + +ED_Tile: ; 6767 (1:6767) + INCBIN "gfx/ED_tile.1bpp" + +PrintAlphabet: ; 676f (1:676f) + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, [$ceeb] + and a + ld de, LowerCaseAlphabet ; $679e + jr nz, .asm_677e + ld de, UpperCaseAlphabet ; $67d6 +.asm_677e + FuncCoord 2, 5 ; $c406 + ld hl, Coord + ld bc, $509 +.asm_6784 + push bc +.asm_6785 + ld a, [de] + ld [hli], a + inc hl + inc de + dec c + jr nz, .asm_6785 + ld bc, $16 + add hl, bc + pop bc + dec b + jr nz, .asm_6784 + call PlaceString + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + jp Delay3 + +LowerCaseAlphabet: ; 679e (1:679e) + db "abcdefghijklmnopqrstuvwxyz ×():;[]",$e1,$e2,"-?!♂♀/",$f2,",¥UPPER CASE@" + +UpperCaseAlphabet: ; 67d6 (1:67d6) + db "ABCDEFGHIJKLMNOPQRSTUVWXYZ ×():;[]",$e1,$e2,"-?!♂♀/",$f2,",¥lower case@" + +Func_680e: ; 680e (1:680e) + call CalcStringLength + ld a, c + ld [$cee9], a + FuncCoord 10, 2 ; $c3d2 + ld hl, Coord + ld bc, $10a + call ClearScreenArea + FuncCoord 10, 2 ; $c3d2 + ld hl, Coord + ld de, $cf4b + call PlaceString + FuncCoord 10, 3 ; $c3e6 + ld hl, Coord + ld a, [$d07d] + cp $2 + jr nc, .asm_6835 + ld b, $7 + jr .asm_6837 +.asm_6835 + ld b, $a +.asm_6837 + ld a, $76 +.asm_6839 + ld [hli], a + dec b + jr nz, .asm_6839 + ld a, [$d07d] + cp $2 + ld a, [$cee9] + jr nc, .asm_684b + cp $7 + jr .asm_684d +.asm_684b + cp $a +.asm_684d + jr nz, .asm_6867 + call EraseMenuCursor + ld a, $11 + ld [wTopMenuItemX], a ; $cc25 + ld a, $5 + ld [wCurrentMenuItem], a ; $cc26 + ld a, [$d07d] + cp $2 + ld a, $9 + jr nc, .asm_6867 + ld a, $6 +.asm_6867 + ld c, a + ld b, $0 + FuncCoord 10, 3 ; $c3e6 + ld hl, Coord + add hl, bc + ld [hl], $77 + ret + +Func_6871: ; 6871 (1:6871) + push de + call CalcStringLength + dec hl + ld a, [hl] + pop hl + ld de, $2 + call IsInArray + ret nc + inc hl + ld a, [hl] + ld [$ceed], a + ret + +Dakutens: ; 6885 (1:6885) + db "かが", "きぎ", "くぐ", "けげ", "こご" + db "さざ", "しじ", "すず", "せぜ", "そぞ" + db "ただ", "ちぢ", "つづ", "てで", "とど" + db "はば", "ひび", "ふぶ", "へべ", "ほぼ" + db "カガ", "キギ", "クグ", "ケゲ", "コゴ" + db "サザ", "シジ", "スズ", "セゼ", "ソゾ" + db "タダ", "チヂ", "ツヅ", "テデ", "トド" + db "ハバ", "ヒビ", "フブ", "へべ", "ホボ" + db $ff + +Handakutens: ; 68d6 (1:68d6) + db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ" + db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ" + db $ff + +; calculates the length of the string at $cf4b and stores it in c +CalcStringLength: ; 68eb (1:68eb) + ld hl, $cf4b + ld c, $0 +.asm_68f0 + ld a, [hl] + cp $50 + ret z + inc hl + inc c + jr .asm_68f0 + +PrintNamingText: ; 68f8 (1:68f8) + FuncCoord 0, 1 ; $c3b4 + ld hl, Coord + ld a, [$d07d] + ld de, YourTextString ; $693f + and a + jr z, .notNickname + ld de, RivalsTextString ; $6945 + dec a + jr z, .notNickname + ld a, [$cf91] + ld [$cd5d], a + push af + callba Func_71882 + pop af + ld [$d11e], a + call GetMonName + FuncCoord 4, 1 ; $c3b8 + ld hl, Coord + call PlaceString + ld hl, $1 + add hl, bc + ld [hl], $c9 + FuncCoord 1, 3 ; $c3dd + ld hl, Coord + ld de, NicknameTextString ; $6953 + jr .placeString +.notNickname + call PlaceString + ld l, c + ld h, b + ld de, NameTextString ; $694d +.placeString + jp PlaceString + +YourTextString: ; 693f (1:693f) + db "YOUR @" + +RivalsTextString: ; 6945 (1:6945) + db "RIVAL's @" + +NameTextString: ; 694d (1:694d) + db "NAME?@" + +NicknameTextString: ; 6953 (1:6953) + db "NICKNAME?@" |