Dakuten and Handakuten. Usually those characters are encoded in a special way and when they're read there's a look up table that contains the "base" character (the bottom character) and the modifying character that goes up top.
07/D7F0: C9 90 CMP #$90 ;This routine is jumped to while the current character
07/D7F2: B0 07 BCS $D7FB ;being read is still in the Accumulator. So, we compare
07/D7F4: 9D 05 06 STA $0605,X ;the current character to #$90, and if its less than #$90
;store it at $0605,X. If A >= #$90 then go to $D7FB.
07/D7F7: A9 01 LDA #$01 ;If its less than #$90, load #$01 into the Accumulator
07/D7F9: D0 0D BNE $D808 ;and branch to $D808 where it will be loaded for the
;Japanese modifier line. (#$01 == empty tile)
07/D7FB: E9 90 SBC #$90
07/D7FD: 0A ASL
07/D7FE: A8 TAY
07/D7FF: B9 89 D8 LDA $D889,Y ;This loads the character from the table of values
;that starts at $D889. The first value is the "base"
;character.
07/D802: 9D 05 06 STA $0605,X ;Which is stored at $0605, where it will be loaded
;into the PPU from afterwards.
07/D805: B9 8A D8 LDA $D88A,Y ;This loads the next value after the one that was
;stored in $0605 above, which will be the modifier
;for the "base" character. (The Dakuten things.)
07/D808: 9D 04 06 STA $0604,X ;This value is then stored at $0604. Again, this will
;be loaded into the PPU after this routine.
07/D80B: 60 RTS
That's the dakuten/handakuten load routine from Dragonball Z Assault of the Saiyans. Characters 90-C1 are dakuten or handakuten. 00-8F are normal kana or control codes, which have already been checked for prior to the subroutine call. C2-FF are invalid and result in gibberish being read and displayed.
Hope that helps.