Have you tried replacing your .asm initialization with a BASIC version?

I know you can sometimes save a few bytes by doing some things in .asm,
but if you initialize everything in banks PBP doesn't insert a ton of bank
switching code flipping back & forth between banks. I.E.

' Bank0 first
PORTB = 0
PORTC = 0
T2CON = 0
' Bank1 next
TRISA = 0
TRISB = 0
CMCON1 = 7, etc, etc,

Are you using assembler in other routines?

I would think either something in the INI or Setup routines is causing
the problem since the splash screen routine is supposed to run directly
after Setup.

If one routine is causing the problem, it should be easy to spot.

Start:
GOSUB INI
blink an LED on return to here x times
GOSUB Setup
blink an LED on return to here x times, etc, etc,.

Of course you could always run it through MPSIM too.