X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=drivers%2Fgp2x%2Fcpuctrl.c;h=9940fd5db4e0e8dbd5d759b23f17e876e25dabec;hp=b75cc66ef5daae67fa21885240ba850f5d37e3e0;hb=cf65360c22e121053d152f611c9b966ccab9f4c2;hpb=7b356ee3dc5d7e54d9dc06c413f84380d1044441 diff --git a/drivers/gp2x/cpuctrl.c b/drivers/gp2x/cpuctrl.c index b75cc66..9940fd5 100644 --- a/drivers/gp2x/cpuctrl.c +++ b/drivers/gp2x/cpuctrl.c @@ -162,12 +162,12 @@ static reg_setting rate_50[] = // 16639/2 ~120.20 static reg_setting rate_120_20[] = { - { 0x0914, 0xffff, (203<<8)|(2<<2)|1 }, /* UPLLSETVREG */ - { 0x0924, 0xff00, (2<<14)|(14<<8) }, /* DISPCSETREG */ - { 0x281A, 0x00ff, 29 }, /* .HSWID(T2) */ - { 0x281C, 0x00ff, 19 }, /* .HSSTR(T8) */ - { 0x281E, 0x00ff, 19 }, /* .HSEND(T7) */ - { 0x2822, 0x01ff, 11 }, /* .VSEND (T9) */ + { 0x0914, 0xffff, (96<<8)|(0<<2)|2 }, /* UPLLSETVREG */ + { 0x0924, 0xff00, (2<<14)|(7<<8) }, /* DISPCSETREG */ + { 0x281A, 0x00ff, 19 }, /* .HSWID(T2) */ + { 0x281C, 0x00ff, 7 }, /* .HSSTR(T8) */ + { 0x281E, 0x00ff, 7 }, /* .HSEND(T7) */ + { 0x2822, 0x01ff, 12 }, /* .VSEND (T9) */ { 0x2826, 0x0ff0, 37<<4 }, /* .DESTR(T3) */ { 0, 0, 0 } }; @@ -175,24 +175,55 @@ static reg_setting rate_120_20[] = // 19997/2 ~100.02 static reg_setting rate_100_02[] = { - { 0x0914, 0xffff, (63<<8)|(1<<2)|1 }, /* UPLLSETVREG */ + { 0x0914, 0xffff, (98<<8)|(0<<2)|2 }, /* UPLLSETVREG */ + { 0x0924, 0xff00, (2<<14)|(8<<8) }, /* DISPCSETREG */ + { 0x281A, 0x00ff, 26 }, /* .HSWID(T2) */ + { 0x281C, 0x00ff, 6 }, /* .HSSTR(T8) */ + { 0x281E, 0x00ff, 6 }, /* .HSEND(T7) */ + { 0x2822, 0x01ff, 31 }, /* .VSEND (T9) */ + { 0x2826, 0x0ff0, 37<<4 }, /* .DESTR(T3) */ + { 0, 0, 0 } +}; + +// 120.00 97/0/2/7|25/ 7/ 7/11/37 +static reg_setting rate_120[] = +{ + { 0x0914, 0xffff, (97<<8)|(0<<2)|2 }, /* UPLLSETVREG */ + { 0x0924, 0xff00, (2<<14)|(7<<8) }, /* DISPCSETREG */ + { 0x281A, 0x00ff, 25 }, /* .HSWID(T2) */ + { 0x281C, 0x00ff, 7 }, /* .HSSTR(T8) */ + { 0x281E, 0x00ff, 7 }, /* .HSEND(T7) */ + { 0x2822, 0x01ff, 11 }, /* .VSEND (T9) */ + { 0x2826, 0x0ff0, 37<<4 }, /* .DESTR(T3) */ + { 0, 0, 0 } +}; + +// 100.00 96/0/2/7|29/25/53/15/37 +static reg_setting rate_100[] = +{ + { 0x0914, 0xffff, (96<<8)|(0<<2)|2 }, /* UPLLSETVREG */ { 0x0924, 0xff00, (2<<14)|(7<<8) }, /* DISPCSETREG */ { 0x281A, 0x00ff, 29 }, /* .HSWID(T2) */ - { 0x281C, 0x00ff, 21 }, /* .HSSTR(T8) */ - { 0x281E, 0x00ff, 20 }, /* .HSEND(T7) */ - { 0x2822, 0x01ff, 12 }, /* .VSEND (T9) */ + { 0x281C, 0x00ff, 25 }, /* .HSSTR(T8) */ + { 0x281E, 0x00ff, 53 }, /* .HSEND(T7) */ + { 0x2822, 0x01ff, 15 }, /* .VSEND (T9) */ { 0x2826, 0x0ff0, 37<<4 }, /* .DESTR(T3) */ { 0, 0, 0 } }; -static reg_setting *possible_rates[] = { rate_almost60, rate_50, rate_120_20, rate_100_02 }; +static reg_setting *possible_rates[] = { rate_almost60, rate_50, rate_120_20, rate_100_02, rate_120, rate_100 }; void set_LCD_custom_rate(lcd_rate_t rate) { reg_setting *set; + if (MEM_REG[0x2800>>1] & 0x100) // tv-out + { + return; + } + printf("setting custom LCD refresh, mode=%i... ", rate); fflush(stdout); for (set = possible_rates[rate]; set->reg; set++) {