system573_tool/ksys573_flash_check.c

316 lines
6.7 KiB
C
Raw Normal View History

2021-02-23 17:32:05 +00:00
#include "main.h"
#define END_MENU 6
void flash_check()
{
int cursor_pos_down_wait=0;
int count_wait=0;
int in_game_end=1;
int test_off=0;
int i=0;
int in_game_mode=0;
button_clear();
//init
unsigned char data_temp[256];
unsigned char data_temp2[4];
unsigned char data_first_1[64];
unsigned char data_first_2[64];
unsigned char data_end_1[64];
unsigned char data_end_2[64];
char hex_temp[2];
char hex_temp2[2];
int erase_sector=0;
int y=0;
int x=0;
int deviceid=0;
int select_device=0;
//END MENU
int menu_exit=END_MENU;
int bank=0;
for(i=0;i<64;i++)
{
data_first_1[i]=0;
data_first_2[i]=0;
data_end_1[i]=0;
data_end_2[i]=0;
}
while(in_game_end) {
if(display_is_old) {
DoubleBuffering();
ClearScreen();
button_update();
print_set_font_color(0xFF,0xFF,0xFF);
print_set_font_status(1,1);
print_str(30,20,11,"FLASH CHECK");
print_str(30,40,13,"SELECT DEVICE");
switch(select_device)
{
case 0:
deviceid=ONBOARD;
break;
case 1:
deviceid=PCCARD1;
break;
case 2:
deviceid=PCCARD2;
break;
}
switch(select_device)
{
case 0:
print_str(100,40,7,"ONBOARD");
break;
case 1:
print_str(100,40,7,"PCCARD1");
break;
case 2:
print_str(100,40,7,"PCCARD2");
break;
case 3:
print_str(100,40,5,"NVRAM");
break;
}
sprintf(data_temp, "BANK %02d",bank);
print_str(30,50,16,data_temp);
print_str(30,60,5,"RESET");
print_str(100,60,5,"ERASE");
print_str(30,70,10,"AUTOSELECT");
print_str(100,70,5,"WRITE");
print_str(150,60,2,hex_temp2);
print_str(30,190,4,"EXIT");
switch(in_game_mode){
case 0:
print_set_font_color(0xFF,0x00,0x00);
print_str(30,40,13,"SELECT DEVICE");
switch(select_device)
{
case 0:
print_str(100,40,7,"ONBOARD");
break;
case 1:
print_str(100,40,7,"PCCARD1");
break;
case 2:
print_str(100,40,7,"PCCARD2");
break;
case 3:
print_str(100,40,5,"NVRAM");
break;
}
print_set_font_color(0xFF,0xFF,0xFF);
break;
case 1:
print_set_font_color(0xFF,0x00,0x00);
print_str(30,50,16,data_temp);
print_set_font_color(0xFF,0xFF,0xFF);
break;
case 2:
print_set_font_color(0xFF,0x00,0x00);
print_str(30,60,5,"RESET");
print_set_font_color(0xFF,0xFF,0xFF);
break;
case 3:
print_set_font_color(0xFF,0x00,0x00);
print_str(100,60,5,"ERASE");
print_set_font_color(0xFF,0xFF,0xFF);
break;
case 4:
print_set_font_color(0xFF,0x00,0x00);
print_str(30,70,10,"AUTOSELECT");
print_set_font_color(0xFF,0xFF,0xFF);
break;
case 5:
print_set_font_color(0xFF,0x00,0x00);
print_str(100,70,5,"WRITE");
print_set_font_color(0xFF,0xFF,0xFF);
break;
case END_MENU:
print_set_font_color(0xFF,0x00,0x00);
print_str(30,190,4,"EXIT");
print_set_font_color(0xFF,0xFF,0xFF);
break;
}
if(pushed_button_hold[2][2]==PAD_ON){
if(cursor_pos_down_wait==0)
{
if(in_game_mode!=menu_exit){
in_game_mode++;
}else{
in_game_mode=0;
}
}
cursor_pos_down_wait++;
if(cursor_pos_down_wait==10)
{
cursor_pos_down_wait=0;
}
}else{
cursor_pos_down_wait=0;
}
if(pad_read(PAD_TEST)!=PAD_ON){
test_off=1;
};
if(pad_read(PAD_TEST)==PAD_ON&&test_off==1){
if(count_wait==0){
count_wait=0;
if(in_game_mode==0)
{
select_device++;
if(select_device==4)
{
select_device=0;
}
}
if(in_game_mode==1)
{
bank++;
if(bank==16)
{
bank=0;
}
}
if(in_game_mode==2)
{
flash_mem_reset(deviceid,bank);
}
if(in_game_mode==3)
{
flash_mem_reset(deviceid,bank);
for(erase_sector=0;erase_sector<32;erase_sector++)
{
DoubleBuffering();
ClearScreen();
sprintf( hex_temp, "%02d",erase_sector);
flash_mem_erase(deviceid,erase_sector,bank);
print_str(10,100,12,"Erase Sector");
print_str(100,100,2,hex_temp);
print_str(116,100,3,"/31");
GsDrawList();
while(GsIsDrawing());
display_is_old=0;
}
flash_mem_reset(deviceid,bank);
}
if(in_game_mode==4)
{
flash_mem_reset(deviceid,bank);
flash_mem_autoselect(deviceid,bank);
}
if(in_game_mode==5)
{
flash_mem_reset(deviceid,bank);
flash_mem_write_data(deviceid,0,bank,0xAA,0xBB);
flash_mem_write_data(deviceid,2,bank,0xCC,0xDD);
flash_mem_write_data(deviceid,4,bank,0xEE,0xFF);
flash_mem_write_data(deviceid,0x3FFFF0,bank,0x00,0x11);
flash_mem_write_data(deviceid,0x3FFFF2,bank,0x22,0x33);
flash_mem_write_data(deviceid,0x3FFFF4,bank,0x44,0x55);
flash_mem_write_data(deviceid,0x3FFFF6,bank,0x66,0x77);
flash_mem_write_data(deviceid,0x3FFFF8,bank,0x88,0x99);
flash_mem_write_data(deviceid,0x3FFFFA,bank,0xAA,0xBB);
flash_mem_write_data(deviceid,0x3FFFFC,bank,0xCC,0xDD);
flash_mem_write_data(deviceid,0x3FFFFE,bank,0xCC,0xDD);
}
if(in_game_mode==menu_exit)
{
game_mode=0;
in_game_end=0;
}
}
count_wait++;
}else{
count_wait=0;
}
//main util
y=0;
x=0;
if(in_game_mode!=menu_exit)
{
if(select_device<3){
print_str(30,90,10,"0x00->0x3F");
for(i=0;i<64;i++)
{
data_first_1[i]=flash_mem_read_data(deviceid,i,bank);
sprintf( hex_temp, "%02x",data_first_1[i]);
print_str(30+(x*10)+2,100+(y*10),2,hex_temp);
x++;
if(x%16==0)
{
x=0;
y++;
}
}
y=0;
x=0;
print_str(30,140,18,"0x3FFFC0->0x3FFFFF");
for(i=0;i<64;i++)
{
data_first_2[i]=flash_mem_read_data(deviceid,i+0x3FFFC0,bank);
sprintf( hex_temp, "%02x",data_first_2[i]);
print_str(30+(x*10)+2,150+(y*10),2,hex_temp);
x++;
if(x%16==0)
{
x=0;
y++;
}
}
}else{
print_str(30,90,10,"0x00->0x3F");
for(i=0;i<64;i++)
{
data_end_1[i]=nvram_read_byte(i);
sprintf( hex_temp, "%02x",data_end_1[i]);
print_str(30+(x*10)+2,100+(y*10),2,hex_temp);
x++;
if(x%16==0)
{
x=0;
y++;
}
}
y=0;
x=0;
print_str(30,140,14,"0x1FC0->0x1FFF");
for(i=0;i<64;i++)
{
data_end_2[i]=nvram_read_byte(i+0x1fc0);
sprintf( hex_temp, "%02x",data_end_2[i]);
print_str(30+(x*10)+2,150+(y*10),2,hex_temp);
x++;
if(x%16==0)
{
x=0;
y++;
}
}
}
}
GsDrawList();
while(GsIsDrawing());
display_is_old=0;
}
}
}