diff --git a/include/arm9/main.h b/include/arm9/main.h index 5c5b478..8ac28d0 100644 --- a/include/arm9/main.h +++ b/include/arm9/main.h @@ -17,12 +17,20 @@ bootInfoStruct bootInfo; +/* +typedef struct { + +} configFileStruct; + +configFileStruct configFile; +*/ + // PrintConsole for each screen -extern PrintConsole con_top, con_bottom; +PrintConsole con_top, con_bottom; // SD card FAT fs instance -extern FATFS sd_fs; +FATFS sd_fs; // same for all NAND filesystems -extern FATFS nand_twlnfs, nand_twlpfs, nand_fs; +FATFS nand_twlnfs, nand_twlpfs, nand_fs; void devs_close(); void unmount_fs(); diff --git a/include/util.h b/include/util.h index 50705af..1fd1c15 100644 --- a/include/util.h +++ b/include/util.h @@ -4,7 +4,7 @@ #define min(a,b) (u32) a < (u32) b ? (u32) a : (u32) b -static void sleep_wait(u32 cycles) +static void wait(u32 cycles) { cycles >>= 2; while(cycles) @@ -14,5 +14,32 @@ } } +// custom safe strncpy, string is always 0-terminated for buflen > 0 +static void strncpy_s(char *dest, char *src, u32 nchars, u32 buflen) +{ + char c; + + if(!buflen) + return; + + if(buflen > 1) + { + if(nchars >= buflen) + nchars = buflen - 1; + + while(nchars--) + { + c = *src++; + + if(c == '\0') + break; + + *dest++ = c; + } + } + + *dest = '\0'; +} + u32 getleu32(const void* ptr); u32 swap32(u32 val); diff --git a/source/arm11/gfx.c b/source/arm11/gfx.c index 93e3fac..fdfb521 100644 --- a/source/arm11/gfx.c +++ b/source/arm11/gfx.c @@ -96,7 +96,7 @@ { REG_PDN_GPU_CNT2_8BIT |= 1; // turn on GPU REG_PDN_GPU_CNT |= 1<<0x10; // turn on LCD backlight - sleep_wait(0x1000); + wait(0x1000); REG_PDN_GPU_CNT |= 0x1007F; REG_PDN_GPU_CNT4 |= 1; @@ -113,7 +113,7 @@ *((vu32 *)(0x1040054C)) = 0xFF; - sleep_wait(0x8000); + wait(0x8000); *((vu32 *)(0x10400578)) = 0x0; *((vu32 *)(0x10400478)) = 0x0; *((vu32 *)(0x10400574)) = 0x10501; @@ -174,7 +174,7 @@ void gfx_init_step2() { - sleep_wait(0x1000); + wait(0x1000); // gpio_stuff *((vu32 *) 0x10202014) = 1; if(((*((vu16 *) 0x10140FFC)) << 0x1F) >> 0x1F) @@ -189,7 +189,7 @@ *((vu32 *) 0x1020200C) &= 0xFFFEFFFE; - sleep_wait(0x1000); + wait(0x1000); //gfx_i2c_lcd_init(); i2cmcu_lcd_poweron(); } @@ -213,7 +213,7 @@ for(i=0; i<10; i++) { //if(!gfx_i2c_lcd_finish()) - sleep_wait(0x20000); + wait(0x20000); //else break; } diff --git a/source/arm11/i2c.c b/source/arm11/i2c.c index 2711b3a..365c3f6 100644 --- a/source/arm11/i2c.c +++ b/source/arm11/i2c.c @@ -70,7 +70,7 @@ void i2c_start(u32 bus_id) { - sleep_wait(0x100); + wait(0x100); if(bus_id == 0) REG_I2C_BUS0_CNT = 0xC2; else @@ -91,7 +91,7 @@ bool i2c_test_ack(u32 bus_id) { i2c_wait(bus_id); - sleep_wait(0x80); + wait(0x80); u8 result; if(bus_id == 0) result = REG_I2C_BUS0_CNT; @@ -103,7 +103,7 @@ u8 i2c_receive_byte(u32 bus_id) { i2c_wait(bus_id); - sleep_wait(0x100); + wait(0x100); if(bus_id == 0) return REG_I2C_BUS0_DATA; else @@ -128,7 +128,7 @@ else REG_I2C_BUS1_CNT = 0xC5; i2c_wait(bus_id); - sleep_wait(0x200); + wait(0x200); } bool i2c_start_put_devaddr(u32 dev_id) diff --git a/source/arm11/main.c b/source/arm11/main.c index 7525303..e690433 100644 --- a/source/arm11/main.c +++ b/source/arm11/main.c @@ -17,7 +17,7 @@ for(;;) { i2c_writeregdata(3, 0x20, 0xff); - sleep_wait(0x200000); + wait(0x200000); } } @@ -66,7 +66,7 @@ } if(hidstate & MCU_HID_HOME_BUTTON_PRESSED) i2cmcu_lcd_backlight_poweroff(); - sleep_wait(0x8000); + wait(0x8000); } // Turn off LCDs and backlight before FIRM launch. diff --git a/source/arm9/filebrowse.c b/source/arm9/filebrowse.c index 96f9758..e58448f 100644 --- a/source/arm9/filebrowse.c +++ b/source/arm9/filebrowse.c @@ -186,7 +186,7 @@ { if(cursor_pos != 0) cursor_pos--; updateScreen(cursor_pos); - sleep_wait(0x1000); + wait(0x1000); } else if(keys & KEY_DDOWN) { @@ -200,7 +200,7 @@ } else cursor_pos++; updateScreen(cursor_pos); - sleep_wait(0x1000); + wait(0x1000); } else if(keys & KEY_A) // select entry diff --git a/source/arm9/main.c b/source/arm9/main.c index 3122473..9143de7 100644 --- a/source/arm9/main.c +++ b/source/arm9/main.c @@ -9,14 +9,6 @@ #include "arm9/dev.h" #include "arm9/firm.h" -// PrintConsole for each screen -PrintConsole con_top, con_bottom; -u8 color; -// SD card FAT fs instance -FATFS sd_fs; -// same for all NAND fss -FATFS nand_twlnfs, nand_twlpfs, nand_fs; - static void devs_init(); static void mount_fs(); static void unit_detect(); @@ -81,7 +73,7 @@ bootInfo.nand_status = dev_rawnand->is_active(); bootInfo.wififlash_status = dev_flash->is_active(); - if(!res) sleep_wait(0x8000000); // mmc or wififlash init fail + if(!res) wait(0x8000000); // mmc or wififlash init fail } void devs_close() @@ -116,7 +108,7 @@ res = f_mount(&nand_fs, "nand:", 1); if(res == FR_OK) printf("%s\e[0m\n", res_str[1]); else printf("%s ERROR 0x%d\e[0m\n", res_str[0], res); - sleep_wait(0x8000000); + wait(0x8000000); } void unmount_fs() diff --git a/source/arm9/menu.c b/source/arm9/menu.c index 0fdf07d..82ecdd5 100644 --- a/source/arm9/menu.c +++ b/source/arm9/menu.c @@ -163,7 +163,7 @@ const char* path = browseForFile("sdmc:"); consoleClear(); printf("selected file:\n%s\n", path); - sleep_wait(0x8000000); + wait(0x8000000); printf("loading firm...\n"); loadFirmSd(path); if(!firm_load_verify(0x400000)) printf("bad firm\n"); diff --git a/source/arm9/sdmmc.c b/source/arm9/sdmmc.c index bbe231c..d1c4ae4 100644 --- a/source/arm9/sdmmc.c +++ b/source/arm9/sdmmc.c @@ -416,7 +416,7 @@ int Nand_Init() { set_target(&handleNAND); - sleep_wait(0xF000); + wait(0xF000); sdmmc_send_command(&handleNAND,0,0); @@ -472,7 +472,7 @@ set_target(&handleSD); - sleep_wait(0x10000); + wait(0x10000); sdmmc_send_command(&handleSD,0,0); sdmmc_send_command(&handleSD,0x10408,0x1AA); @@ -532,7 +532,7 @@ tries = 0; for(;;) { - sleep_wait(0x1000); + wait(0x1000); if(sdmmc_read16(REG_SDSTATUS0) & TMIO_STAT0_SIGSTATE) break; if(tries == 0x10000) return -1; tries++; diff --git a/source/arm9/util_nand.c b/source/arm9/util_nand.c index 2ab94d3..375a70f 100644 --- a/source/arm9/util_nand.c +++ b/source/arm9/util_nand.c @@ -96,7 +96,7 @@ fail: free(buf); - sleep_wait(0x8000000); + wait(0x8000000); return false; } @@ -175,6 +175,6 @@ fail: free(buf); - sleep_wait(0x8000000); + wait(0x8000000); return false; }