What I did was generate an assembly listing and then look for where it was setting the player pointers. I have my compile batch set up to generate an assembly listing automatically whenever I compile a bB program. To do this, you must edit your 2600bas.bat file and find the places where it calls the dasm assembler (there are two lines where it does this). Then you add the -l switch (that's a lowercase L, for "listing"), followed by %1.lst (don't put a space between them-- i.e., it's -l%1.lst). This is what my dasm command line looks like in my 2600bas.bat file:
dasm.exe %1.asm -f3 -I%bB%\Includes -l%1.lst -o%1.bin
There's a lot of other stuff after that, related to the sed.exe program, but you can leave it be. Your batch file might not have the .exe extensions on dasm and sed-- they aren't necessary, but I added them on anyway-- and I may have rearranged the command switches to put them in alphabetical order (in particular, I think I moved the -f switch to put it in front of the -I switch). If you want to add the -l switch, you can put it anywhere after the %1.asm, but before the part where it starts getting into the sed.exe program.
Anyway, after you compile your bB program and it generates a .lst listing, you open up the .lst file and search for your "player0:" statements. If you want, you can save time by looking for "set kernel multisprite," since the two "player0:" statements come right after that. This is what they look like in the .lst file:
1175 f43f game
1176 f43f .L00 ; set kernel multisprite
1177 f43f
1178 f43f .L01 ; player0:
1179 f43f
1180 f43f a9 5a LDA #<playerL01_0
1181 f441
1182 f441 85 a2 STA player0pointerlo
1183 f443 a9 fb LDA #>playerL01_0
1184 f445
1185 f445 85 a3 STA player0pointerhi
1186 f447 a9 a2 LDA #162
1187 f449 85 b0 STA player0height
1188 f44b .L02 ; player0:
1189 f44b
1190 f44b a9 5a LDA #<playerL02_0
1191 f44d
1192 f44d 85 a2 STA player0pointerlo
1193 f44f a9 fc LDA #>playerL02_0
1194 f451
1195 f451 85 a3 STA player0pointerhi
1196 f453 a9 1e LDA #30
1197 f455 85 b0 STA player0height
Then you want to see what the program is setting player0pointerhi to. You actually need to look at the line immediately before that, where the program is loading the accumulator:
1183 f443 a9 fb LDA #>playerL01_0
1184 f445
1185 f445 85 a3 STA player0pointerhi
and
1193 f44f a9 fc LDA #>playerL02_0
1194 f451
1195 f451 85 a3 STA player0pointerhi
The important part is where the machine code is, in the middle of the line. For the first LDA instruction, the machine code is "a9 fb," and for the second LDA instruction it's "a9 fc." The "a9" is the machine code that means "LDA #" (load the accumulator with a number), and the other part is the hi-byte (or page number) of the address where the sprite table starts-- in this case, "fb" for the first sprite table, and "fc" for the second sprite table. Then you have to convert those values to decimal so you'll know what to use in the "phi" data table, as follows:
a=10, b=11, c=12, d=13, e=14, f=15
fb = 16*f + b = 16*15 + 11 = 240 + 11 = 251
fc = 16*f + c = 16*15 + 12 = 240 + 12 = 252
data phi
251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251
251,251,251,251,251,251,251,251,251,251,251,252,252,252,252,252
end
Or you can use the hex values without converting them, as long as you put "$" in front of them:
data phi
$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb
$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fb,$fc,$fc,$fc,$fc,$fc
end