diff options
Diffstat (limited to 'home/text.asm')
-rw-r--r-- | home/text.asm | 528 |
1 files changed, 262 insertions, 266 deletions
diff --git a/home/text.asm b/home/text.asm index 99dedc75..43c1631a 100644 --- a/home/text.asm +++ b/home/text.asm @@ -18,7 +18,7 @@ TextBoxBorder:: .next push hl ld a, "│" - ld [hli],a + ld [hli], a ld a, " " call NPlaceChar ld [hl], "│" @@ -49,139 +49,129 @@ NPlaceChar:: PlaceString:: push hl PlaceNextChar:: - ld a,[de] + ld a, [de] cp "@" - jr nz,.PlaceText - ld b,h - ld c,l + jr nz, Char4ETest + ld b, h + ld c, l pop hl ret -.PlaceText - cp $4E - jr nz,.next - ld bc,SCREEN_WIDTH * 2 - ld a,[hFlags_0xFFF6] - bit 2,a - jr z,.next2 - ld bc,SCREEN_WIDTH +Char4ETest:: + cp $4E ; next + jr nz, .next + ld bc, 2 * SCREEN_WIDTH + ld a, [hFlags_0xFFFA] + bit 2, a + jr z, .next2 + ld bc, SCREEN_WIDTH .next2 pop hl - add hl,bc + add hl, bc push hl - jp PlaceNextChar_inc + jp PlaceNextChar_inc ; 17b6 .next - cp $4F - jr nz,.next3 + cp $4F ; line + jr nz, .next3 pop hl coord hl, 1, 16 push hl jp PlaceNextChar_inc .next3 ; Check against a dictionary +dict: macro +if \1 == 0 and a - jp z,Char00 - cp $4C - jp z,Char4C - cp $4B - jp z,Char4B - cp $51 - jp z,Char51 - cp $49 - jp z,Char49 - cp $52 - jp z,Char52 - cp $53 - jp z,Char53 - cp $54 - jp z,Char54 - cp $5B - jp z,Char5B - cp $5E - jp z,Char5E - cp $5C - jp z,Char5C - cp $5D - jp z,Char5D - cp $55 - jp z,Char55 - cp $56 - jp z,Char56 - cp $57 - jp z,Char57 - cp $58 - jp z,Char58 - cp $4A - jp z,Char4A - cp $5F - jp z,Char5F - cp $59 - jp z,Char59 - cp $5A - jp z,Char5A - ld [hli],a +else + cp \1 +endc + jp z, \2 +endm + + dict $00, Char00 ; error + dict $4C, Char4C ; autocont + dict $4B, Char4B ; cont_ + dict $51, Char51 ; para + dict $49, Char49 ; page + dict $52, Char52 ; player + dict $53, Char53 ; rival + dict $54, Char54 ; POKé + dict $5B, Char5B ; PC + dict $5E, Char5E ; ROCKET + dict $5C, Char5C ; TM + dict $5D, Char5D ; TRAINER + dict $55, Char55 ; cont + dict $56, Char56 ; 6 dots + dict $57, Char57 ; done + dict $58, Char58 ; prompt + dict $4A, Char4A ; PKMN + dict $5F, Char5F ; dex + dict $59, Char59 ; TARGET + dict $5A, Char5A ; USER + + ld [hli], a call PrintLetterDelay PlaceNextChar_inc:: inc de jp PlaceNextChar Char00:: - ld b,h - ld c,l + ld b, h + ld c, l pop hl - ld de,Char00Text + ld de, Char00Text dec de ret -Char00Text:: ; 0x19f4 “%d ERROR.” - TX_FAR _Char00Text +Char00Text:: ; 17c2 (0:17c2) ; “%d ERROR.” + TX_FAR _Char00Text ; a0c66 (28:4c66) db "@" -Char52:: ; 0x19f9 player’s name +Char52:: ; 17c7 (0:17c7) ; player’s name push de - ld de,wPlayerName + ld de, wPlayerName jr FinishDTE -Char53:: ; 19ff (0:19ff) ; rival’s name +Char53:: ; 17cd (0:17cd) ; rival’s name push de - ld de,wRivalName + ld de, wRivalName jr FinishDTE -Char5D:: ; 1a05 (0:1a05) ; TRAINER +Char5D:: ; 17d3 (0:17d3) ; TRAINER push de - ld de,Char5DText + ld de, Char5DText jr FinishDTE -Char5C:: ; 1a0b (0:1a0b) ; TM +Char5C:: ; 17d9 (0:17d9) ; TM push de - ld de,Char5CText + ld de, Char5CText jr FinishDTE -Char5B:: ; 1a11 (0:1a11) ; PC +Char5B:: ; 17df (0:17df) ; PC push de - ld de,Char5BText + ld de, Char5BText jr FinishDTE -Char5E:: ; 1a17 (0:1a17) ; ROCKET +Char5E:: ; 17e5 (0:17e5) ; ROCKET push de - ld de,Char5EText + ld de, Char5EText jr FinishDTE -Char54:: ; 1a1d (0:1a1d) ; POKé +Char54:: ; 17eb (0:17eb) ; POKé push de - ld de,Char54Text + ld de, Char54Text jr FinishDTE -Char56:: ; 1a23 (0:1a23) ; …… +Char56:: ; 17f1 (0:17f1) ; …… push de - ld de,Char56Text + ld de, Char56Text jr FinishDTE -Char4A:: ; 1a29 (0:1a29) ; PKMN +Char4A:: ; 17f7 (0:17f7) ; PKMN push de - ld de,Char4AText + ld de, Char4AText jr FinishDTE Char59:: @@ -190,7 +180,7 @@ Char59:: ; or ; player active monster’s name ; (like Char5A but flipped) - ld a,[H_WHOSETURN] + ld a, [H_WHOSETURN] xor 1 jr MonsterNameCharsCommon @@ -199,27 +189,26 @@ Char5A:: ; player active monster’s name ; or ; enemy active monster’s name, prefixed with “Enemy ” - ld a,[H_WHOSETURN] + ld a, [H_WHOSETURN] MonsterNameCharsCommon:: push de and a - jr nz,.Enemy - ld de,wBattleMonNick ; player active monster name + jr nz, .Enemy + ld de, wBattleMonNick ; player active monster name jr FinishDTE .Enemy ; print “Enemy ” - ld de,Char5AText + ld de, Char5AText call PlaceString - - ld h,b - ld l,c - ld de,wEnemyMonNick ; enemy active monster name + ld h, b + ld l, c + ld de, wEnemyMonNick ; enemy active monster name FinishDTE:: call PlaceString - ld h,b - ld l,c + ld h, b + ld l, c pop de inc de jp PlaceNextChar @@ -239,76 +228,83 @@ Char56Text:: Char5AText:: db "Enemy @" Char4AText:: - db $E1,$E2,"@" ; PKMN + db $E1, $E2, "@" ; PKMN Char55:: push de - ld b,h - ld c,l - ld hl,Char55Text - call TextCommandProcessor - ld h,b - ld l,c + ld b, h + ld c, l + ld hl, Char55Text + call TextCommandProcessor ; 1919 + ld h, b + ld l, c pop de inc de jp PlaceNextChar Char55Text:: ; equivalent to Char4B - TX_FAR _Char55Text + TX_FAR _Char55Text ; a0c73 (28:4c73) db "@" Char5F:: ; ends a Pokédex entry - ld [hl],"." + ld [hl], "." pop hl ret -Char58:: - ld a,[wLinkState] +Char58:: ; 1863 (0:1863) prompt + ld a, [wLinkState] cp LINK_STATE_BATTLING - jp z,Next1AA2 - ld a,$EE + jp z, .next + ld a, $EE Coorda 18, 16 -Next1AA2:: - call ProtectedDelay3 - call ManualTextScroll - ld a, " " +.next ; 1870 (0:1870) + call ProtectedDelay3 ; 1913 + call ManualTextScroll ; 388e + ld a, " " ; space Coorda 18, 16 -Char57:: +Char57:: ; 1aad (0:1aad) done pop hl - ld de,Char58Text + ld de, Char58Text dec de ret Char58Text:: db "@" -Char51:: +Char51:: ; 1882 (0:1882) para push de - ld a,$EE + ld a, $EE Coorda 18, 16 call ProtectedDelay3 call ManualTextScroll coord hl, 1, 13 lb bc, 4, 18 call ClearScreenArea - ld c,20 + ld c, 20 call DelayFrames pop de coord hl, 1, 14 jp PlaceNextChar_inc Char49:: + ld a, [hFlags_0xFFFA] + bit 3, a + jr z, .Char49 + ld a, $4e + jp Char4ETest + +.Char49 push de - ld a,$EE + ld a, $EE Coorda 18, 16 call ProtectedDelay3 call ManualTextScroll coord hl, 1, 10 lb bc, 7, 18 call ClearScreenArea - ld c,20 + ld c, 20 call DelayFrames pop de pop hl @@ -317,7 +313,7 @@ Char49:: jp PlaceNextChar_inc Char4B:: - ld a,$EE + ld a, $EE Coorda 18, 16 call ProtectedDelay3 push de @@ -328,36 +324,36 @@ Char4B:: ;fall through Char4C:: push de - call Next1B18 - call Next1B18 + call ScrollTextUpOneLine ; 18f1 + call ScrollTextUpOneLine coord hl, 1, 16 pop de jp PlaceNextChar_inc -Next1B18:: +ScrollTextUpOneLine:: coord hl, 0, 14 coord de, 0, 13 - ld b,60 + ld b, 60 .next - ld a,[hli] - ld [de],a + ld a, [hli] + ld [de], a inc de dec b - jr nz,.next + jr nz, .next coord hl, 1, 16 ld a, " " - ld b,SCREEN_WIDTH - 2 + ld b, SCREEN_WIDTH - 2 .next2 - ld [hli],a + ld [hli], a dec b - jr nz,.next2 + jr nz, .next2 ; wait five frames - ld b,5 + ld b, 5 .WaitFrame call DelayFrame dec b - jr nz,.WaitFrame + jr nz, .WaitFrame ret @@ -368,42 +364,42 @@ ProtectedDelay3:: ret TextCommandProcessor:: - ld a,[wLetterPrintingDelayFlags] + ld a, [wLetterPrintingDelayFlags] push af - set 1,a - ld e,a - ld a,[$fff4] + set 1, a + ld e, a + ld a, [$fff9] xor e - ld [wLetterPrintingDelayFlags],a - ld a,c - ld [wUnusedCC3A],a - ld a,b - ld [wUnusedCC3B],a + ld [wLetterPrintingDelayFlags], a + ld a, c + ld [wTextDestinationTileAddrBuffer], a + ld a, b + ld [wTextDestinationTileAddrBuffer + 1], a NextTextCommand:: - ld a,[hli] + ld a, [hli] cp a, "@" ; terminator - jr nz,.doTextCommand + jr nz, .doTextCommand pop af - ld [wLetterPrintingDelayFlags],a + ld [wLetterPrintingDelayFlags], a ret .doTextCommand push hl - cp a,$17 - jp z,TextCommand17 - cp a,$0e - jp nc,TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB + cp a, $17 + jp z, TextCommand17 + cp a, $0e + jp nc, TextCommand0B ; if a != 0x17 and a >= 0xE, go to command 0xB ; if a < 0xE, use a jump table - ld hl,TextCommandJumpTable + ld hl, TextCommandJumpTable push bc add a - ld b,$00 - ld c,a - add hl,bc + ld b, $00 + ld c, a + add hl, bc pop bc - ld a,[hli] - ld h,[hl] - ld l,a + ld a, [hli] + ld h, [hl] + ld l, a jp [hl] ; draw box @@ -413,17 +409,17 @@ NextTextCommand:: ; CC = width TextCommand04:: pop hl - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] - ld b,a - ld a,[hli] - ld c,a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a push hl - ld h,d - ld l,e + ld h, d + ld l, e call TextBoxBorder pop hl jr NextTextCommand @@ -432,13 +428,13 @@ TextCommand04:: ; 00{string} TextCommand00:: pop hl - ld d,h - ld e,l - ld h,b - ld l,c + ld d, h + ld e, l + ld h, b + ld l, c call PlaceString - ld h,d - ld l,e + ld h, d + ld l, e inc hl jr NextTextCommand @@ -447,13 +443,13 @@ TextCommand00:: ; AAAA = address of string TextCommand01:: pop hl - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a push hl - ld h,b - ld l,c + ld h, b + ld l, c call PlaceString pop hl jr NextTextCommand @@ -466,18 +462,18 @@ TextCommand01:: ; bits 5-7 = unknown flags TextCommand02:: pop hl - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] push hl - ld h,b - ld l,c - ld c,a + ld h, b + ld l, c + ld c, a call PrintBCDNumber - ld b,h - ld c,l + ld b, h + ld c, l pop hl jr NextTextCommand @@ -486,12 +482,12 @@ TextCommand02:: ; AAAA = new destination address TextCommand03:: pop hl - ld a,[hli] - ld [wUnusedCC3A],a - ld c,a - ld a,[hli] - ld [wUnusedCC3B],a - ld b,a + ld a, [hli] + ld [wTextDestinationTileAddrBuffer], a + ld c, a + ld a, [hli] + ld [wTextDestinationTileAddrBuffer + 1], a + ld b, a jp NextTextCommand ; repoint destination to second line of dialogue text box @@ -506,15 +502,15 @@ TextCommand05:: ; 06 ; (no arguments) TextCommand06:: - ld a,[wLinkState] - cp a,LINK_STATE_BATTLING - jp z,TextCommand0D - ld a,$ee ; down arrow + ld a, [wLinkState] + cp a, LINK_STATE_BATTLING + jp z, TextCommand0D + ld a, $ee ; down arrow Coorda 18, 16 ; place down arrow in lower right corner of dialogue text box push bc call ManualTextScroll ; blink arrow and wait for A or B to be pressed pop bc - ld a," " + ld a, " " Coorda 18, 16 ; overwrite down arrow with blank space pop hl jp NextTextCommand @@ -523,10 +519,10 @@ TextCommand06:: ; 07 ; (no arguments) TextCommand07:: - ld a," " + ld a, " " Coorda 18, 16 ; place blank space in lower right corner of dialogue text box - call Next1B18 ; scroll up text - call Next1B18 + call ScrollTextUpOneLine ; scroll up text + call ScrollTextUpOneLine pop hl coord bc, 1, 16 ; address of second line of dialogue text box jp NextTextCommand @@ -535,7 +531,7 @@ TextCommand07:: ; 08{code} TextCommand08:: pop hl - ld de,NextTextCommand + ld de, NextTextCommand push de ; return address jp [hl] @@ -547,25 +543,25 @@ TextCommand08:: ; bits 4-7 = how long the number is in bytes TextCommand09:: pop hl - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] push hl - ld h,b - ld l,c - ld b,a - and a,$0f - ld c,a - ld a,b - and a,$f0 + ld h, b + ld l, c + ld b, a + and a, $0f + ld c, a + ld a, b + and a, $f0 swap a - set BIT_LEFT_ALIGN,a - ld b,a + set BIT_LEFT_ALIGN, a + ld b, a call PrintNumber - ld b,h - ld c,l + ld b, h + ld c, l pop hl jp NextTextCommand @@ -575,10 +571,10 @@ TextCommand09:: TextCommand0A:: push bc call Joypad - ld a,[hJoyHeld] - and a,A_BUTTON | B_BUTTON - jr nz,.skipDelay - ld c,30 + ld a, [hJoyHeld] + and a, A_BUTTON | B_BUTTON + jr nz, .skipDelay + ld c, 30 call DelayFrames .skipDelay pop bc @@ -592,24 +588,24 @@ TextCommand0B:: pop hl push bc dec hl - ld a,[hli] - ld b,a ; b = command number that got us here + ld a, [hli] + ld b, a ; b = command number that got us here push hl - ld hl,TextCommandSounds + ld hl, TextCommandSounds .loop - ld a,[hli] + ld a, [hli] cp b - jr z,.matchFound + jr z, .matchFound inc hl jr .loop .matchFound - cp a,$14 - jr z,.pokemonCry - cp a,$15 - jr z,.pokemonCry - cp a,$16 - jr z,.pokemonCry - ld a,[hl] + cp a, $14 + jr z, .pokemonCry + cp a, $15 + jr z, .pokemonCry + cp a, $16 + jr z, .pokemonCry + ld a, [hl] call PlaySound call WaitForSoundToFinish pop hl @@ -617,7 +613,7 @@ TextCommand0B:: jp NextTextCommand .pokemonCry push de - ld a,[hl] + ld a, [hl] call PlayCry pop de pop hl @@ -626,43 +622,43 @@ TextCommand0B:: ; format: text command ID, sound ID or cry ID TextCommandSounds:: - db $0B,SFX_GET_ITEM_1 - db $12,SFX_CAUGHT_MON - db $0E,SFX_POKEDEX_RATING - db $0F,SFX_GET_ITEM_1 - db $10,SFX_GET_ITEM_2 - db $11,SFX_GET_KEY_ITEM - db $13,SFX_DEX_PAGE_ADDED - db $14,NIDORINA ; used in OakSpeech - db $15,PIDGEOT ; used in SaffronCityText12 - db $16,DEWGONG ; unused? + db $0B, SFX_GET_ITEM_1 + db $12, SFX_TURN_OFF_PC + db $0E, SFX_POKEDEX_RATING + db $0F, SFX_GET_ITEM_1 + db $10, SFX_GET_ITEM_2 + db $11, SFX_GET_KEY_ITEM + db $13, SFX_TRADE_MACHINE + db $14, PIKACHU ; used in OakSpeech + db $15, PIDGEOT ; used in SaffronCityText12 + db $16, DEWGONG ; unused? ; draw ellipses ; 0CAA ; AA = number of ellipses to draw TextCommand0C:: pop hl - ld a,[hli] - ld d,a + ld a, [hli] + ld d, a push hl - ld h,b - ld l,c + ld h, b + ld l, c .loop - ld a,$75 ; ellipsis - ld [hli],a + ld a, $75 ; ellipsis + ld [hli], a push de call Joypad pop de - ld a,[hJoyHeld] ; joypad state - and a,A_BUTTON | B_BUTTON - jr nz,.skipDelay ; if so, skip the delay - ld c,10 + ld a, [hJoyHeld] ; joypad state + and a, A_BUTTON | B_BUTTON + jr nz, .skipDelay ; if so, skip the delay + ld c, 10 call DelayFrames .skipDelay dec d - jr nz,.loop - ld b,h - ld c,l + jr nz, .loop + ld b, h + ld c, l pop hl jp NextTextCommand @@ -682,23 +678,23 @@ TextCommand0D:: ; BB = bank TextCommand17:: pop hl - ld a,[H_LOADEDROMBANK] + ld a, [H_LOADEDROMBANK] push af - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] - ld [H_LOADEDROMBANK],a - ld [MBC1RomBank],a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld [H_LOADEDROMBANK], a + ld [MBC1RomBank], a push hl - ld l,e - ld h,d + ld l, e + ld h, d call TextCommandProcessor pop hl pop af - ld [H_LOADEDROMBANK],a - ld [MBC1RomBank],a + ld [H_LOADEDROMBANK], a + ld [MBC1RomBank], a jp NextTextCommand TextCommandJumpTable:: |