base:dtv_detect
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:dtv_detect [2015-04-17 04:31] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== DTV detect ====== | ||
+ | Also detects C64 vs C128, and PAL vs NTSC. | ||
+ | < | ||
+ | ; | ||
+ | ; DTV detect v1.0 by TLR (disassembly by groepaz) | ||
+ | ; | ||
+ | ; returns: | ||
+ | ; | ||
+ | ; a=$7f c64 | ||
+ | ; $ff c128 | ||
+ | ; $7d dtv1 (ntsc dtv) | ||
+ | ; $75 dtv2 (early pal dtv) | ||
+ | ; $74 dtv3 (recent pal dtv, hummer game) | ||
+ | ; | ||
+ | ; x=0 ntsc | ||
+ | ; 1 pal | ||
+ | ; | ||
+ | dtvdetect: | ||
+ | |||
+ | PHP | ||
+ | SEI | ||
+ | |||
+ | LDA #$00 | ||
+ | STA $FB | ||
+ | STA $FC | ||
+ | |||
+ | LDX #$FE | ||
+ | CPX $D030 | ||
+ | ROL $FB | ||
+ | STA $D03F | ||
+ | JSR ic03e | ||
+ | |||
+ | LDA #$01 | ||
+ | STA $D03F | ||
+ | JSR ic03e | ||
+ | |||
+ | LDA $FB | ||
+ | CMP #$3A | ||
+ | BNE skp1 | ||
+ | JSR ic067 | ||
+ | skp1: | ||
+ | ROL $FB | ||
+ | LDA #$00 | ||
+ | STA $D03F | ||
+ | |||
+ | ; test pal/ntsc | ||
+ | JSR palntsc | ||
+ | ROL $FC | ||
+ | |||
+ | PLP | ||
+ | LDA $FB | ||
+ | LDX $FC | ||
+ | RTS | ||
+ | |||
+ | ; | ||
+ | !scr " | ||
+ | ; | ||
+ | |||
+ | ic03e: | ||
+ | LDY #$D0 | ||
+ | LDX #$40 | ||
+ | JSR ic04e | ||
+ | LDX #$80 | ||
+ | JSR ic04e | ||
+ | LDY #$D3 | ||
+ | LDX #$00 | ||
+ | ic04e: | ||
+ | STY cmphi | ||
+ | LDA #$55 | ||
+ | lp1: | ||
+ | STA $D000 | ||
+ | cmphi=*+2 | ||
+ | CMP $D300,X | ||
+ | BNE skp2 | ||
+ | |||
+ | EOR #$FF | ||
+ | CMP #$55 | ||
+ | BNE lp1 | ||
+ | ic061: | ||
+ | ROL $FB | ||
+ | RTS | ||
+ | skp2: | ||
+ | CLC | ||
+ | BCC ic061 | ||
+ | ; | ||
+ | ic067: | ||
+ | LDX #$1F | ||
+ | STX $FF | ||
+ | lp2: | ||
+ | LDA ic086,X | ||
+ | STA $D320,X | ||
+ | DEX | ||
+ | BPL lp2 | ||
+ | |||
+ | LDA #$0F | ||
+ | STA $D33A | ||
+ | lp3: | ||
+ | LDA $D33F | ||
+ | LSR A | ||
+ | BCS lp3 | ||
+ | |||
+ | LDA $FF | ||
+ | BEQ skp3 | ||
+ | RTS | ||
+ | skp3: | ||
+ | SEC | ||
+ | RTS | ||
+ | |||
+ | ic086: | ||
+ | !byte $89, | ||
+ | !byte 0,0,0,0, 0,0,0,0 | ||
+ | !byte $ff,0,0,0, 0,0,0,0 | ||
+ | !byte 1,0,0,5, 0,0,0,0 | ||
+ | ; | ||
+ | palntsc: | ||
+ | |||
+ | lp4: | ||
+ | LDA $D011 | ||
+ | BMI lp4 | ||
+ | lp5: | ||
+ | LDA $D011 | ||
+ | BPL lp5 | ||
+ | lp6: | ||
+ | LDA $D012 | ||
+ | CMP #$20 | ||
+ | BEQ skp4 | ||
+ | |||
+ | LDA $D011 | ||
+ | BMI lp6 | ||
+ | CLC ; C=0 - ntsc | ||
+ | skp4: | ||
+ | RTS | ||
+ | ; | ||
+ | </ |
base/dtv_detect.txt · Last modified: 2015-04-17 04:31 by 127.0.0.1